我將如何配置我的視圖模型和視圖,支持包含以下枚舉下拉列表默認值:DropDownListFor從枚舉使用視圖模型
public enum PersonType
{
Bride,
Groom
}
我想下拉的文字顯示「新娘」 ,「新郎」,值分別爲0和1。我想爲視圖配置一個默認(新娘或新郎)。這是爲了創建一個「創建」表單,我將發佈並稍後確定選擇了哪個選項(我猜我需要在我的ViewModel中使用int來跟蹤用戶選擇的內容)。這將如何連線?我正在使用剃刀。
我將如何配置我的視圖模型和視圖,支持包含以下枚舉下拉列表默認值:DropDownListFor從枚舉使用視圖模型
public enum PersonType
{
Bride,
Groom
}
我想下拉的文字顯示「新娘」 ,「新郎」,值分別爲0和1。我想爲視圖配置一個默認(新娘或新郎)。這是爲了創建一個「創建」表單,我將發佈並稍後確定選擇了哪個選項(我猜我需要在我的ViewModel中使用int來跟蹤用戶選擇的內容)。這將如何連線?我正在使用剃刀。
public enum PersonType
{
Bride=0,
Groom=1
}
在模型中,你會在你的控制器
,並在你看來有這樣
public class mymodel{
[Required(ErrorMessage="this field is required")]
public int ID{get;set;}
public IEnumerable<KeyValuePair<string, string>> _list{get;set}
}
屬性
@Html.DropDownListFor(x=>x.ID,new SelectList(model._list,"key","value"))
@ValidationMessageFor(x=>x.ID)
我已經創建了一個的HtmlHelper枚舉 - 並設置一個默認字符串te如果模型類型是枚舉,則使用該幫助器。
這意味着我可以去@Html.EnumDropDownListFor(x => x.PersonType)
,它會顯示帶有枚舉選項的下拉列表。
我從this博客複製的幫手,並添加以下到\共享\ EditorTemplates \ String.cshtml字符串模板
@model object
@if (Model is Enum)
{
@Html.EnumDropDownListFor(x => x)
}
else
{
@Html.TextBoxFor(x => x)
}
這意味着我將得到任何枚舉的下拉列表,而不擔心改變視圖模型。
幫助程序不會將選擇框的值設置爲底層數字,但它仍會綁定到操作參數。您應該能夠很容易地編輯助手,讓他們輕鬆地將底層編號作爲下拉列表的一部分。
他需要的值是int,除此之外,這是要走的路。 – 2011-12-22 02:32:08
謝謝!我如何在視圖中將它默認爲「新郎」?我可以發送「選定的值」嗎? – 2011-12-22 02:33:54
只是反轉您的枚舉值 – Rafay 2011-12-22 02:42:40