ASP.NET MVC - 使用IEnumerable模型插入或更新视图

May*_*ayo 2 asp.net-mvc ienumerable binding controller

我已经看过很多例子(NerdDinner,Sanderson's Sports Store等),其中视图被绑定到一组对象.视图中的语法通常是这样的......

<%@ Page... Inherits="System.Web.Mvc.ViewPage<IEnumerable<MyViewModel>>" %>
...
<% foreach (var myViewModel in Model) { %>
Run Code Online (Sandbox Code Playgroud)

我还看到了很多插入或更新的例子,其中控制器自动将模型参数绑定到视图中的表单元素.

我正在寻找这两种技术的混合,其中我的视图具有与myViewModel集合相关的元素,其中每个myViewModel具有3-4个属性.目的是允许用户一次性输入一组.

假设这是可能的,任何人都可以帮我解释语法吗?我无法弄清楚如何标记表单元素以使绑定工作.

Sco*_*son 5

这可以通过内置的模型绑定器实现,但您必须对表单对象进行一些基于约定的命名.首先,您的行动需要采取集合:

[HttpPost]
public ActionResult CreateFoos(List<Foo> foos)
{
   // I have a list of the foo objects that were posted
}
Run Code Online (Sandbox Code Playgroud)

然后,在视图中,假设您想为每个对象创建一个表单:

<% for (int i = 0; i < Model.Count; i++) { %>
    <%: Html.TextBoxFor(x => x[i].Property1) %>
    <%: Html.TextBoxFor(x => x[i].Property2) %>
    <%: Html.TextBoxFor(x => x[i].Property3) %>
<% } %>
Run Code Online (Sandbox Code Playgroud)

注意控件在HTML中的呈现方式,因为在"创建"视图中,您可能希望有一个允许用户添加其他记录的javascript按钮,并且您必须增加每个附加控件的索引.这不是太难,但我只是想提醒你注意它实际产生的来源.