我见过很多例子(NerdDinner、Sanderson's Sports Store等)。其中视图被绑定到对象的集合。视图中的语法通常如下所示...
<%@ Page... Inherits="System.Web.Mvc.ViewPage<IEnumerable<MyViewModel>>" %>
...
<% foreach (var myViewModel in Model) { %>我还看到了大量的插入或更新示例,其中控制器自动将模型参数绑定到视图中的表单元素。
我正在寻找两种技术的混合,其中我的视图具有与myViewModels集合相关的表单元素,其中每个myViewModel都有3-4个属性。其目的是允许用户在一次拍摄中输入一组这些内容。
假设这是可能的,有人能帮我解决语法问题吗?我不知道如何标记表单元素才能使绑定工作。
发布于 2010-09-24 03:54:41
明确的答案在这里:http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx
您需要为每个字段命名,就好像它是数组的一部分:"PropertyNamei“
发布于 2010-09-24 04:02:09
这可以通过内置的模型绑定器来实现,但是您必须对表单对象进行一些基于约定的命名。首先,您的操作需要获取一个集合:
[HttpPost]
public ActionResult CreateFoos(List<Foo> foos)
{
// I have a list of the foo objects that were posted
}然后,在视图中,假设您想为每个对象创建一个表单:
<% 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) %>
<% } %>请注意控件在HTML中是如何呈现的,因为在“创建”视图中,您可能希望有一个允许用户添加另一个记录的javascript按钮,并且您必须为每个额外的控件增加索引。这并不是很难,但我只是想警告您注意它实际生成的源代码。
https://stackoverflow.com/questions/3781935
复制相似问题