在MVC中将数据从视图传输到控制器

时间:2017-02-05 09:23:45

标签: asp.net-mvc asp.net-mvc-4

我正在尝试将所有数据传递给HttpPost'index'方法,但它无法正常工作。

我的观点如下:

angular.element('#add_widget').click();

我的模特:

<body>
@using (Html.BeginForm())
{

    <select class="selectStyled" id="SelectBranch">
        @{
            var branches = Model.Select(x => x.Branch1).Distinct().ToList();
        }
        <option value="">Pick-up location</option>
        @foreach (var i in branches)
        {
            <option value="@i">@i</option>
        }
    </select>

    <input type="text" placeholder="Pick Up Date" id="txtboxPickup" />
    <input type="time" />

    <input type="text" placeholder="Drop Off Date" id="txtboxDropoff" />
    <input type="time" />
    <input class="buttonStyle" style="background-color:white; color:black" type="submit" value="Search" />
}
</body>

在控制器中我有两种方法:

@model IEnumerable<MvcProject.Branch>

2 个答案:

答案 0 :(得分:0)

据我所知,在Index操作中,您希望传递三个值:branch,pickup,dropoff值。更好的方法

1)创建模型

public class BranchPostModel 
{
public int BranchId {get;set;}
public string Pickup {get;set;}
public string Dropoff{get;set;}
}

2)将您的索引后操作更改为:

[HttpPost]
public ActionResult Index(BranchPostModel model)
{
    ///////////
    Branch b = me.Branches.First(i=>i.Id == model.BranchId);
    var pickup = model.Pickup;
    var dropoff = model.Dropoff;
    //////////
    return View();
}

3)在视图中输入正确的名称/选择。 HTML中输入的名称应与BranchPostModel

中的属性名称相匹配
<body>
@using (Html.BeginForm())
{

    <select class="selectStyled" name="BranchId" id="SelectBranch">
        @{
            var branches = Model.Select(x => x.Branch1).Distinct().ToList();
        }
        <option value="">Pick-up location</option>
        @foreach (var i in branches)
        {
            <option value="@i">@i</option>
        }
    </select>

    <input type="text" placeholder="Pick Up Date" name="Pickup" id="txtboxPickup" />
    <input type="time" />

    <input type="text" placeholder="Drop Off Date" name="Dropoff" id="txtboxDropoff" />
    <input type="time" />
    <input class="buttonStyle" style="background-color:white; color:black" type="submit" value="Search" />
}
</body>

答案 1 :(得分:0)

尝试Ajax方法。它有助于将任何数据传递到相应的Action

$.ajax({
    url: '@Url.Action("ControllerName","test")',
    data: {data: item},
    type: 'POST',
    success: function(data) {
        Alert("Data passed Sucessfully");
    }
});