抱歉,如果这是一个非常愚蠢的问题。
如果我有一个带有列表的模型,例如:
public class Edit_model
{
public List<Other_model> Items { get; set; }
/// <summary>
/// Default class constructor
/// </summary>
public RecipesEdit_model()
{
this.Items = new List<Other_Model>();
}
}
然后我将它传递给我的Edit
操作,填充Items
然后将其发送到视图。由于Items
是一个列表,我总是尝试做这样的事情:
<div>
<ul>
@foreach (var item in Model.Items)
{
<li>
@Html.EditorFor(m => item, "_ItemEditorTemplate")
</li>
}
</ul>
</div>
这总是搞砸模板中生成的控件的 id,因此对Edit
post 操作的模型绑定永远不会起作用。
如果我Items
使用循环进行循环,它确实有效for
,如下所示:
<div>
<ul>
@for (int i = 0; i < Model.Items.Count; i++)
{
<li>
@Html.EditorFor(m => m.Items[i], "_ItemEditorTemplate")
</li>
}
</ul>
</div>
我知道为什么会这样,因为我得到的 lambda 表达式实际上在函数中使用了正确的变量......但我不太喜欢这个,因为根据 C# 编程的经验,你可能会遇到索引问题,所以我很想而是使用foreach
.
使它起作用的语法是什么foreach
?