4

注文を表示するページと、注文の詳細を表示するタブがある場合があります。注文の詳細は非常に複雑で、同じレイアウトであるため、フォームを生成する部分ビューまたはエディター テンプレートを使用したいと考えています。

問題は、結果として複数の重複するフォーム入力 ID が生成されることです (注文の詳細ごとに 1 つです。たとえば、次のようなものがあります。

foreach (var orderDetail in Model.OrderDetils)
{
    @Html.EditorFor(model => orderDetail, "WorkOrder", orderDetail)
}

私はこれについて多くのことを読み、editortemplate を使用することが推奨される解決策を見てきましたが、その解決策は、レンダリングするフォームが同じであるが、異なるモデル プロパティを渡す場合にのみ機能するため、コントロール ID のプレフィックスが異なります...つまり. このソリューションのように

私の場合、渡すモデル プロパティが常に同じであるため、これは機能しません。

では、バインドする部分テンプレートまたはエディター テンプレートで一意の ID を作成するにはどうすればよいでしょうか。

私は代わりに知っています:

@Html.EditorFor(model => model.WOHdr.Attribute1)

私はそれをできた:

@Html.TextBoxFor(model => model.WOHdr.Attribute1, new { id = Model.Id + "_Attribute1" })

ただし、コントローラーに渡されるとバインドされません。

考え?

4

2 に答える 2

1

これを試して

@Html.TextBoxFor(model => model.WOHdr.Attribute1, new { @id = @Model.Id + "_Attribute1" })

「@」+動的な値を使用します。これで、一意のIDが取得されます

EditorFor では、このように使用できます

@Html.EditorFor(model => model.WOHdr.Attribute1, null, "id=" + @Model.Id + "" )

IDはこのように生成されます

id="id_1", id="id_2" and so on..
于 2013-07-12T06:57:32.557 に答える