我有一个Form和一个带有以下输入字段的简单模型:
public class Order
{
public int Id { get; set; }
public DateTime OrderDate { get; set; }
public string Article { get; set; }
public double Price { get; set; }
public string Notice { get; set; }
}
我的表格看起来像这样
我可以捕获控制器上的值
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "OrderID,OrderDate,Article,Price,Notice")] Order order)
{
if (ModelState.IsValid)
{
db.Orders.Add(order);
db.SaveChanges();
return RedirectToAction("Index");
}
return View(order);
}
因此。我想用jQuery添加动态字段。这工作正常,但我不知道如何从多个输入字段中获取值。这就是我的问题。
所以我想为每个订单创建一个实体。 (如何在最后一张图片中)
请查看最后一张图片
这就是我想要的结果!我怎样才能在ASP.NET MVC C#中得到这个结果?我使用Entity Framework 6 谢谢你的帮助!
答案 0 :(得分:1)
首先,您需要更改操作以接受List<Order>
参数(或属性为List<Order>
类型的强类型视图模型):
[HttpGet]
public ActionResult Create()
{
var model = new List<Order>();
return View(model);
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(List<Order> orders)
{
// Update code omitted
return View(order);
}
然后在您的视图中添加模型声明:
@model List<Order>;
现在,您需要更正的部分是在HTML输入名称上动态添加Order
个对象的命名,以保持模型绑定器的快乐。
在输入名称上创建第一个订单项时,应该是:
Name="[0].Id"
Name="[0].OrderDate"
Name="[0].Article"
Name="[0].Price"
Name="[0].Notice"
这将是第一个订单等等:
Name="[1].Id"
Name="[1].OrderDate"
Name="[1].Article"
Name="[1].Price"
Name="[1].Notice"
这篇文章非常值得一读: