使用Textboxfor或Editorfor属性列表中的属性

时间:2014-12-02 20:44:57

标签: c# asp.net-mvc-4 html-helper

我的模型包含Organization名为Organizations的列表。每个Organization都有NameNumber

为了在提交表单时自动绑定模型,我需要按照我从几个教程中找到的命名约定为每个文本框指定一个特定的名称(在代码中查看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; }
}

1 个答案:

答案 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) %>
}

然后会自动生成正确的名称。

相关问题