我的模型包含Organization
名为Organizations
的列表。每个Organization
都有Name
和Number
。
为了在提交表单时自动绑定模型,我需要按照我从几个教程中找到的命名约定为每个文本框指定一个特定的名称(在代码中查看namePrefix
)。 / p>
但是,我宁愿使用Html.TextboxFor
而不是Html.Textbox
,因此它将使用数据属性和验证。如何让Html.TextboxFor使用我需要的命名约定?
<%
int orgIndex = 0;
foreach(Organization org in Model.Organizations)
{
string namePrefix = String.Format("Organizations[{0}].", orgIndex++);
%>
<%= Html.TextBox(namePrefix + "Name" , org.Name) %>
<%= Html.TextBox(namePrefix + "Number", org.Number) %>
<% } %>
这是我的模特......
public class User
{
[ListMinLength(1)]
public List<Organization> Organizations;
}
public class Organization
{
[Display(Prompt = "COMMON_DEALER_NAME", ResourceType = typeof(Modules.Properties.Resources))]
public string Name { get; set; }
[Display(Prompt = "DEALER_ID_PLACEHOLDER", ResourceType = typeof(Modules.Properties.Resources))]
public string Number { get; set; }
public long Id { get; set; }
}
答案 0 :(得分:1)
让Razor为您处理此问题。将您的代码更改为:
for (var i = 0; i < Model.Organizations.Count(); i++)
{
<%= Html.TextBoxFor(m => m.Organizations[i].Name) %>
<%= Html.TextBoxFor(m => m.Organizations[i].Number) %>
}
然后会自动生成正确的名称。