2012-07-26 22 views
1

我想将第一个选项值设置为0,而不是空白。我该如何设置? 即如何将元素的第一个选项值设置为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> 

回答

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(); 
} 

它的工作。

1

你不能用内置的辅助做到这一点。你将不得不写一个自定义的助手或硬编码或其他。

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

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

现在你将不再有任何问题或需要使用0作为第一个选项。

而且最好是使用助手的强类型版本:

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

但是,如果由于某些其他原因(我没有看到此刻的),你需要使用0作为第一个选项你在荒野中独自一人。

+0

怎么样添加[0, “请选择 - ”]在'Model.Parents'? – Mohayemin 2012-07-26 08:24:52

+0

@Mohayemin,这确实是实现这一目标的丑恶方式之一。即使它能达到预期效果,我也不会这样做。 – 2012-07-26 09:02:16

+0

这不适合我。因为我在同一个表中没有Child - > Parent关系。另外我试过'公众诠释? ParentId {get;组; }'但没有工作 – 2012-07-26 09:10:41

相关问题