1

抱歉,如果这是一个非常愚蠢的问题。

如果我有一个带有列表的模型,例如:

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,因此对Editpost 操作的模型绑定永远不会起作用。

如果我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

4

1 回答 1

0
@Html.EditorFor(m => item, "_ItemEditorTemplate")

这是正确的。

m 只是一个变量,实际上并没有在方法体中使用它。

什么是错误信息?

于 2012-10-18T07:43:36.747 回答