1

同じ名前のパラメーターを持つ単一のフォームから複数のエンティティを作成したいと考えています。1 から始まり、配列内の項目の最大数で終わる配列を作成しようとしています。エンティティ フレームワークはデフォルトでこれを行いますか。

例:

PersonName(1): "Bob"
PersonName(2): "John"
PersonName(3): "Mindy"

エンティティ フレームワークを使用してコレクションをループ処理する場合、name 属性と id 属性に推奨される方法はありますか。

HTML:

<input name="personname(1)" id="personname(1)" value="Bob" /><br />
<input name="personname(2)" id="personname(1)" value="John" /><br />
<input name="personname(3)" id="personname(1)" value="Mindy" /><br />

また、@Html.EditorFor を使用すると、id および name 属性に名前を付けるためのオーバーロードされたメソッドがいくつかあることに気付きました。したがって、空の文字列に設定されたテンプレート名を使用してこれらを構築することをお勧めします。

htmlFieldName="personname" + "(" + i + ")";

それとも得意なテクニックはありますか?

4

3 に答える 3

3

Html ヘルパーを使用する場合、特に EditorTemplates を使用する場合は、これが自動的に行われます。例えば:

@for(int i=0, i<collection.Count; i++)
{
    Html.TextBoxFor(m => m.collection[i].Name);
    <input type="submit"/>
}

これにより、適切なインデックスを使用して入力要素が作成されます。ただし、より良い方法は、単純にエディター テンプレートを使用することです。

@Html.EditorFor(m => m.collection)
于 2013-06-24T06:16:14.743 に答える
2

forループを使用してコレクションをループできます。人名に [index] を追加します。例えば:

for(int i = 0; i < personName.Length; i++)
{
    <input name="personName[" + i + "]" id="personName_" + i value=personName[i] />
}

ID 値には大かっこ、中かっこなどを含めることはできないことに注意してください。そのため、アンダースコアとインデックス値などを使用する必要があります。

于 2013-06-24T06:04:38.090 に答える