我想将第一个选项值设置为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>
答案 0 :(得分:1)
使用内置帮助程序无法执行此操作。您必须编写自定义帮助程序或硬编码或其他任何内容。
或者只是使用视图模型和可以为空的整数:
[Required]
public int? ParentId { get; set; }
现在您将不再有任何问题或需要使用0作为第一选项。
最好使用强类型版本的帮助程序:
@Html.DropDownListFor(model => model.ParentId, Model.Parents, "--Select--")
但是如果由于某些其他原因(我目前没有看到)你需要使用0作为第一选项,那么你就是在荒野中自己。
答案 1 :(得分: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();
}
有效。