web-dev-qa-db-ja.com

mvc 5 DropDownListの値が空白のテーブルからのSelectList

以下のコードを使用してドロップダウンを作成しています

コントローラー

ViewBag.Id= new SelectList(db.TableName.OrderBy(x => x.Name),"Id","Name")

表示

 @Html.DropDownList("Id", null, htmlAttributes: new { @class = "form-control" })

私の質問は、SelectListに自動的に空白項目が追加されるように、DropDownListを変更して空白項目を追加する方法です。

ありがとう。

25
ary

optionLabelを受け入れる overloads のいずれかを使用します

@Html.DropDownListFor(m => m.ID, (SelectList)ViewBag.MyList, "Please select", new { @class = "form-control" })

または、強く型付けされたメソッドを使用したくない場合

@Html.DropDownList("ID", (SelectList)ViewBag.MyList, "Please select", new { @class = "form-control" })

3番目のパラメーターで指定されたテキストとnull値を持つ最初のオプションを追加します

<option value="">Please Select</option>
47
user3559349

このオーバーロードを使用できます:

public static MvcHtmlString DropDownList(this HtmlHelper htmlHelper, string name, IEnumerable<SelectListItem> selectList, string optionLabel, object htmlAttributes);

ここで、optionLabelはデフォルトの空のアイテムのテキストです。

3
romanoza

私のプロジェクトでは、これらは機能します:

コントローラ

ViewBag.TagHfoFlagId= new SelectList(db.TableName.OrderBy(x => x.Name),"Id","Name")

見る

 @Html.DropDownList("TagHfoFlagId", null,"--Select Name--", htmlAttributes: new { @id = "tags" })
1
user1575120

受け入れられた回答は機能しますが、以前に選択した場合でも、ビューのドロップダウンリストにデフォルト(ヌル)値が表示されます。ビューをレンダリングしてからドロップダウンリストに既に選択されている値を表示する場合は、代わりにこれを使用します。

コントローラー

ViewBag.Fk_Id_Parent_Table = new SelectList(db.Parent_Table, "Id", "Name", Child_Table.Fk_Id_Parent_Table);
return View(ChildTable);

表示

@Html.DropDownList(
             "Fk_Id_Parent_Table",
             null, 
             "Not Assigned", 
             htmlAttributes: new { @class = "form-control" }
                  )
0