MVC - Html 帮助程序的名称更改并在使用 foreach 循环时添加项目前缀

MVC - Name of Html Helper change and get prepended with item when using foreach loop

我有一个显示复选框列表的页面,为了在页面上显示我的复选框,我使用以下代码:

@foreach (var item in Model)
{
      <td>
       @Html.EditorFor(
       model => item.IsSelected, new { htmlAttributes = new { @name = "IsSelected" } })
      </td>
}

现在我的问题是,当页面呈现时,复选框的名称前面加上项目,因此名称是 item.IsSelected 而不是 IsSelected,因此活页夹无法将其绑定到我的 ViewModel,我已经尝试设置它的名称但没有用,有没有办法让我保持名称不变或使用一些技巧将它绑定到我的 ViewModel 而无需使用普通 Html?

编辑: 我的视图模型:

    public int NewsLetterId { get; set; }
    public string NewsLetterEmail { get; set; }
    public string NewsLetterSubscriberName { get; set; }
    public bool IsActive { get; set; }

    public bool IsSelected { get; set; }
    public int? PriCatIDfk { get; set; }
    //[ForeignKey("PriCatIDfk")]  
    public virtual PriCat PriCat { get; set; }

    public int? SecCatIDfk { get; set; }
    //[ForeignKey("SecCatIDfk")]  
    public virtual SecCat SecCat { get; set; }

只是不要使用 EditorFor,请尝试使用 CheckBoxFor

@for (int i = 0; i < Model.Count(); i++)
{
      <td>
       @Html.CheckBoxFor(x => Model[i].IsSelected)
      </td>
}

您应该使用 for 循环而不是 foreach,因为这是在没有 编辑器模板 .

的情况下为绑定创建正确名称的唯一方法

实际上我想这也行得通:

@for (int i = 0; i < Model.Count(); i++)
{
      <td>
       @Html.EditorFor(x => Model[i].IsSelected)
      </td>
}