2012-07-26 29 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

相關問題