1

1つのビューで複数回使用されるフォームに名前とIDを入力するために、インデックスを追加するにはどうすればよいですか?

各写真(ビルボード)のコンテキスト固有のキャプションを編集する機能を提供するフォトローテーターのフォームを作成しました。管理者がローテーターの写真セットのすべてのキャプションを1つのビューで編集できるように、このフォームフィールドの複数のインスタンスを含めることができる必要があります。そのため、IDとフィールド名を一意に保つ方法が必要です。

エディターテンプレートは自動的にプレフィックスを追加しますが、次のように写真をループすると:

<% foreach (var billboard in Model.Billboards ) {  %>
    <%: Html.EditorFor(x => billboard, "BillboardForm")%>
<% } %>

プレフィックスとして「billboard_」を追加するだけで、問題は解決しません。

各入力名とIDの最後にローテーターIDビルボードIDを追加したいと思います。

<form action="/Rotators/Edit/5" method="post">                  
    <input id="billboard_21_RotatorId" name="billboard_21_RotatorId" type="hidden" value="5" /> 
    <input id="billboard_21_ImageId" name="billboard_21_ImageId" type="hidden" value="19" />
    <label for="billboard_21_Title">Title</label>
    <textarea cols="20" id="billboard_21_Title" name="billboard_21_Title" rows="2">Title</textarea>
    <label for="billboard_21_Caption">Caption</label>
    <textarea cols="20" id="billboard_21_Caption" name="billboard_21_Caption" rows="2">This is the caption</textarea>
    <select id="billboard_21_TopicId" name="billboard_21_TopicId">
        <option value="1">1st option</option>                   
    </select>
</form>

これを行う簡単な方法はありますか?

4

2 に答える 2

1

スティーブ・サンダーソンのブログ投稿からこのサンプルコードをダウンロードしてください。ご質問とは直接関係ありません。しかし、デモ プロジェクトでは、入力または一連の入力のプレフィックス スコープを変更する BeginCollectionItem html ヘルパーが見つかります。これにより、ua の開始点が得られます。編集: エディター テンプレートでは、次のようなスティーブのコードから次のメソッドを使用できます。

using(Html.BeginHtmlFieldPrefixScope("BillBoard" + Model.ID.ToString())){
<label>Image<label>
@Html.TextBoxFor(x=>x.Image)
<label>Caption</label>
@Html.TextBoxFor(x=>x.Caption)
}

ID がモデルのプロパティで、値が 4 の場合、次のような html が表示されます

<label>Image</label>
<input name = "BillBoard4.Image" .../>
<label>Caption</label>
<input name = "BillBoard4.Caption" .../>
于 2011-06-13T09:36:49.307 に答える