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>
}
我有一个显示复选框列表的页面,为了在页面上显示我的复选框,我使用以下代码:
@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>
}