3
模型:MVC 3形式和列表:默认模型粘合剂和EditorFor
public class MyObject
{
public IList<Entry> Entries;
}
public class Entry
{
public string Name { get; set; }
}
如果我使用默认EditorFor(型号=> model.Entries)的名称/ ID值是:
<input type="text" value="" name="Entries[0].Name" id="Entries_0__Name">
相反,如果我想创建一个模板EditorFor像这样:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<List<CMS.Models.MyObject>>" %>
<div class="list">
<%
for (int i = 0; i < Model.Count; i++)
{ %>
<div class="object" id="<%: i %>">
<%: Html.EditorFor(model => Model[i]) %>
<%: Html.ValidationMessageFor(model => Model[i]) %>
</div>
<% } %>
</div>
所发出的名称/ ID值是:
<input type="text" value="" name="Entries.[0].Name" id="Entries__0__Name">
因此,名称在属性名称和[0]之间有一段时间,id在索引号的左侧有一个额外的下划线。这不适用于默认模型联编程序。有没有办法做到这一点,使用默认的模型联编程序?
你为什么要这样做?你只是想要包含验证信息,或者真的需要使用ID集合来设置div标签吗? – 2011-02-11 01:13:36
我这样做是为了让我可以在列表的末尾添加一个通用的基于jQuery的“添加”选项来添加另一个元素。使用该HTML发布列表使得“添加”泛型更容易。想想一个表格,其中一个部分需要N个引用(每个引用具有多个属性),另一个部分需要N个关于其他东西的详细信息(每个部分都有多个属性)等... – Cymen 2011-02-11 01:16:03