1

最初のオプション値を空白のままにする代わりに0に設定したいと思います。どうすればこれを設定できますか?すなわち

<select id="PatentId" name="ParentId">
     <option value="0">--Select--</option>
     <option value="1">Books</option>
      // other options
</select>

私のコードは

<div class="editor-field">
     @Html.DropDownList("ParentId","--Select--")
     @Html.ValidationMessageFor(model => model.ParentId)
</div>
4

2 に答える 2

1

最後に、次のコードが機能していることがわかりました

private SelectList AddFirstItem(SelectList list)
{
   List<SelectListItem> _list = list.ToList();
   _list.Insert(0, new SelectListItem() { Value = "0", Text = "--Select--" });
   return new SelectList((IEnumerable<SelectListItem>)_list, "Value", "Text", list.SelectedValue);
}

「値」と「テキスト」を保持します。最後list.SelectedValueは、選択した値をそのまま保持することです。

上記の機能は次のように使用できます

public ActionResult Create()
{
    ViewBag.ParentId = AddFirstItem(new SelectList(db.Categories, "Id", "Name"));
    return View();
} 

機能した。

于 2012-07-27T05:42:29.690 に答える
1

組み込みのヘルパーではこれを行うことはできません。カスタム ヘルパーやハードコードなどを作成する必要があります。

または、単純にビュー モデルと null 許容整数を使用します。

[Required]
public int? ParentId { get; set; }

これで問題はなくなり、最初のオプションとして 0 を使用する必要もなくなりました。

また、強く型付けされたバージョンのヘルパーを使用することをお勧めします。

@Html.DropDownListFor(model => model.ParentId, Model.Parents, "--Select--")

しかし、他の理由 (現時点ではわかりません) で最初のオプションとして 0 を使用する必要がある場合は、自分で荒野にいます。

于 2012-07-26T07:37:32.367 に答える