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 を常に台無しにするため、Editポスト アクションでのモデル バインディングは機能しません。

ただし、次のようにループをItems使用してループすると機能します。for

        <div>
            <ul>
                @for (int i = 0; i < Model.Items.Count; i++)
                {
                    <li>
                        @Html.EditorFor(m => m.Items[i], "_ItemEditorTemplate")
                    </li>
                }
            </ul>
        </div>

関数で実際に正しい変数を使用してラムダ式を取得するため、それが機能する理由がわかります...しかし、C#でのプログラミングの経験から、インデックス作成の問題が発生する可能性があるため、これはあまり好きではありません。むしろ使うforeach

これを機能させるための構文は何foreachですか?

4

1 に答える 1

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

そうです。

m は単なる変数であり、メソッド本体で実際に使用するわけではありません。

エラーメッセージは何ですか?

于 2012-10-18T07:43:36.747 に答える