1

我想将第一个选项值设置为 0 而不是将其留空。我该如何设置?IE

<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

你不能用内置的助手来做到这一点。您将不得不编写自定义帮助程序或硬代码或其他任何东西。

或者简单地使用一个视图模型和一个可为空的整数:

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

现在您将不再有任何问题或需要使用 0 作为首选。

此外,最好使用强类型版本的助手:

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

但是,如果出于其他原因(我目前没有看到)您需要使用 0 作为第一个选项,那么您在荒野中独自一人。

于 2012-07-26T07:37:32.367 回答
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 回答