对属于列表的属性使用 Textboxfor 或 Editor

本文关键字:Textboxfor Editor 属性 属于 列表 | 更新日期: 2023-09-27 18:32:48

我有一个模型,其中包含一个名为OrganizationsOrganization列表。每个Organization都有一个Name和一个Number

为了使模型在提交表单时自动绑定,我需要按照从几个教程中找到的命名约定为每个文本框指定一个特定名称(查看代码中的namePrefix)。

但是,我宁愿使用 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; }
}

对属于列表的属性使用 Textboxfor 或 Editor

让 Razor 为您处理这个问题。将代码更改为:

for (var i = 0; i < Model.Organizations.Count(); i++)
{ 
    <%= Html.TextBoxFor(m => m.Organizations[i].Name) %> 
    <%= Html.TextBoxFor(m => m.Organizations[i].Number) %>
}

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