2011-08-09 87 views
2

好的,我的挑戰是: 我想在我的註冊視圖中創建一個包含三個字符串的下拉列表 - 「請選擇」,「我是客戶」,「我是供應商」 。當用戶選擇「我是客戶」並提交時,他被添加到「客戶」角色中。當用戶選擇「我是供應商」角色時,他將被添加到「供應商」角色中。如果用戶沒有選擇任何一個,並且「請選擇」,則發生驗證。MVC3 Dropdownlist - String/Role Value

我可以通過ViewBag直接填充角色。具體方法如下:

Register.cshtml -

 <div class="editor-label"> 
      @Html.LabelFor(m => m.Role, "I am a:") 
     </div> 
     <div class="editor-field"> 
      @Html.DropDownList("Role", ViewBag.Roles as SelectList,"Please Select") 
     </div> 



AccountModel.cs -

public class RegisterModel 
{ 

    [Required] 
    [Display(Name = "Role")] 
    public string Role { get; set; } 



AccountController.cs -

public ActionResult Register() 
    { 

     ViewBag.Roles = new SelectList(Roles.GetAllRoles().ToList()); 
     return View(); 



我還需要完成什麼 - 目前,下拉列表僅填充實際角色。這不是我想要的。

我該如何在註冊視圖中創建三個字符串的下拉列表 - 「請選擇」,「我是客戶」和「我是供應商」。

我沒有留下這一個頭髮,並會感謝任何人可以幫助我找出這一個。謝謝。

回答

6

類似的東西下面將很好地工作:

public class RegisterModel 
{ 

    [Required] 
    [Display(Name = "Role")] 
    public string Role { get; set; } 

然後你就可以在你的觀點與此類似。

@Html.DropDownListFor(x => x.Role, new[] { 
new SelectListItem() {Text = "I am a vendor", Value = "Vendor"}, 
new SelectListItem() {Text = "I am a client", Value = "Client"} 
}, "Pick a basket") 

編輯:字符串是一個引用類型,默認爲可空。

+0

@HelloJonnyOh更新。抱歉點擊提交太快。 –

+0

老兄,你是炸彈人DIGGITY !!!!!!!你不知道我爲這件事掙了多少個星期。 –

+0

老兄,我會投你一票,但我有一個measley 10級......大聲笑。再一次,非常感謝! –

0

可以在構造函數中設置列表值:SelectList(dataObjects, valueField, textField)

ViewBag.Roles = new SelectList(Roles.GetAllRoles().ToList(), "Id", "Name"); 

這允許您定義角色的對象被設置爲選項的值和文本的哪些屬性。

+0

嗯。我也會嘗試這個。 –