以下のコードを使用してドロップダウンを作成しています
コントローラー
ViewBag.Id= new SelectList(db.TableName.OrderBy(x => x.Name),"Id","Name")
表示
@Html.DropDownList("Id", null, htmlAttributes: new { @class = "form-control" })
私の質問は、SelectList
に自動的に空白項目が追加されるように、DropDownList
を変更して空白項目を追加する方法です。
ありがとう。
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>
このオーバーロードを使用できます:
public static MvcHtmlString DropDownList(this HtmlHelper htmlHelper, string name, IEnumerable<SelectListItem> selectList, string optionLabel, object htmlAttributes);
ここで、optionLabel
はデフォルトの空のアイテムのテキストです。
私のプロジェクトでは、これらは機能します:
コントローラ
ViewBag.TagHfoFlagId= new SelectList(db.TableName.OrderBy(x => x.Name),"Id","Name")
見る
@Html.DropDownList("TagHfoFlagId", null,"--Select Name--", htmlAttributes: new { @id = "tags" })
受け入れられた回答は機能しますが、以前に選択した場合でも、ビューのドロップダウンリストにデフォルト(ヌル)値が表示されます。ビューをレンダリングしてからドロップダウンリストに既に選択されている値を表示する場合は、代わりにこれを使用します。
コントローラー
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" }
)