如果mvc表单</object>,如何返回List <object>

时间:2015-03-27 17:08:21

标签: asp.net-mvc

我有一个USER和一个CAR类。

我知道如何构建一个USER CREATE表单,命名简单元素与db上的字段(如name,phonenumber)相同,所以在SUBMIT上,Action方法获取每个元素,我可以将它保存到db。

现在在CREATE表单上我还希望用户添加CARS,并在SUBMIT上发送List。

我是怎么做到的?

例如,我可以返回这样的集合或返回一个car元素,为每个car属性创建一个输入。

<form method="post" action="/Home/UpdateInts">
     <input type="text" name="cars" value="1" />
     <input type="text" name="cars" value="4" />
     <input type="text" name="cars" value="2" />
     <input type="text" name="cars" value="8" />
     <input type="submit" />
</form>

public ActionResult UpdateInts(ICollection<int> cars) {
  SaveMethod(cars);
}

但我如何接受

public ActionResult UpdateInts(ICollection<Car> myCars) {
  SaveMethod(myCars);
}

我正在使用jQuery EasyUI grid在创建用户页面中添加汽车,制作和模型。

2 个答案:

答案 0 :(得分:1)

我通过使用原始表单数据解决了它。因此不需要将模型传递给视图(不是MVC模式)。这不是最佳解决方案,而是一种可行的解决方案。如果我想出更好的解决方案,我会尽快更新。

<强>控制器:

[HttpPost]
public ActionResult AddCars(int a = 0){
        var context = new ApplicationDbContext();
        var form = Request.Form;
        for (int i = 1; i < form.Count; i ++ )
        {
            context.Cars.Add(new Car() { Name = form[i] });
        }
        context.SaveChanges();
        return View();
}

查看:

@using (Html.BeginForm()) 
{
    @Html.AntiForgeryToken()

    <div class="form-horizontal">
        <h4>Car</h4>
        <hr />
        <input type="text" name="car1" value="car1" />
        <input type="text" name="car2" value="car2" />
        <input type="text" name="car3" value="car3" />
        <input type="text" name="car4" value="car4" />
        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Create" class="btn btn-default" />
            </div>
        </div>
    </div>
}

<div>
    @Html.ActionLink("Back to List", "Index")
</div>

<强>模型

public class Car{
    public int Id { get; set; }
    public string Name { get; set; }
}

答案 1 :(得分:0)

制作一个包含汽车集合的用户的视图模型。

public clas ViewModel
{
    //User properties
    public IEnumerable<Car> Cars {get; set;}
}

在视图中使用此视图模型进行创建/编辑:

@model ViewModel
@using (Html.BeginForm()) 
{
    //User Editor Here

    @for(int i=0; i <= Model.Cars.Count(); i++)
    {
        @Html.EditorFor(x => Model.Cars[i])
    }
}

<div>
    @Html.ActionLink("Back to List", "Index")
</div>

行动

[HttpPost]
public ActionResult UpdateInts(ViewModel viewModel) {
  //Get your user and cars here and save them
}