0

各行にフォームのフィールドが含まれるテーブルがあります。

これを使用してビューを繰り返します。

@foreach (var item in Model) { }

foreach 内で、さまざまなフィールドが含まれる新しいテーブル行を作成します。例えば:

<tr><td> @Html.DropDownList("granny", "") </td></tr>

「granny」はコントローラー経由で渡され、次のようになります。

ViewData["granny"] = new SelectList(db.getGrannies(), "grannyid", "grannyname");

すべてがうまくいっています。ビューはおばあちゃんを獲得しており、すべてがよさそうです。しかし、フィールドの name プロパティ { 例...

<select id="granny" name="granny">

作成されたすべての行でまったく同じです。これは問題です。このデータを FormCollection の形式でコントローラーに戻し、これらすべてのおばあちゃんと楽しいことをしたいと考えています。それらがすべて合格していない場合、私はそれを行うことができません。

つまり、代わりに、次のように selects を読みたいと思います。

<select id="granny1" name="granny1">
<select id="granny2" name="granny2">

問題を少し調べて、使用してみました

new { @Name="xyz" + n }

しかし、Visual Studio はそれほど気に入りませんでした。


それのすべての短くて甘いはこれです:

ViewData で生成された Html.DropDownLists に独自の一意の ID/名前を与えるにはどうすればよいですか?

4

2 に答える 2

1

ViewData で生成された Html.DropDownLists に独自の一意の ID/名前を与えるにはどうすればよいですか?

name生成された入力フィールドの を変更することはできません。これは仕様によるものです。IDのみ変更できました。これは、あなたがそれをする必要はないと言われています。次のことができます。

@for (var i = 0; i < Model.Count; i++) 
{ 
    <tr>
        <td>
            @Html.DropDownList(
                "selectedGranny", 
                (IEnumerable<SelectListItem>)ViewData["granny"]
            )
        </td>
    </tr>    
}
于 2013-02-20T14:15:36.163 に答える
1

コレクションをデータバインドしようとしているか、選択に手動で名前を付ける必要があるようです (これらは Web フォームの実際には異なるコントロールであるため)。

次のオーバーロードを使用して、HTML パラメーターをドロップダウンに渡すことができます。

@Html.DropDownList(
    "CategoryID", 
    (SelectList)ViewBag.CategoryId, 
    "--Select One--", 
    new{  //anonymous type
          name = "granny1",
          @class = "myCssClass", 
          onchange = "someFunction();"
       }) 
于 2013-02-20T14:55:03.777 に答える