2011-12-22 79 views
2

我將如何配置我的視圖模型和視圖,支持包含以下枚舉下拉列表默認值:DropDownListFor從枚舉使用視圖模型

public enum PersonType 
{ 
    Bride, 
    Groom 
} 

我想下拉的文字顯示「新娘」 ,「新郎」,值分別爲0和1。我想爲視圖配置一個默認(新娘或新郎)。這是爲了創建一個「創建」表單,我將發佈並稍後確定選擇了哪個選項(我猜我需要在我的ViewModel中使用int來跟蹤用戶選擇的內容)。這將如何連線?我正在使用剃刀。

回答

4
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) 
+1

他需要的值是int,除此之外,這是要走的路。 – 2011-12-22 02:32:08

+0

謝謝!我如何在視圖中將它默認爲「新郎」?我可以發送「選定的值」嗎? – 2011-12-22 02:33:54

+0

只是反轉您的枚舉值 – Rafay 2011-12-22 02:42:40

1

我已經創建了一個的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) 
} 

這意味着我將得到任何枚舉的下拉列表,而不擔心改變視圖模型。

幫助程序不會將選擇框的值設置爲底層數字,但它仍會綁定到操作參數。您應該能夠很容易地編輯助手,讓他們輕鬆地將底層編號作爲下拉列表的一部分。