2014-03-25 46 views
0

我正在構建一個ASP.NET MVC 4的Web應用程序,它允許創建用戶具有角色。有兩個角色:管理員和用戶。註冊時,用戶可以選擇感謝下拉列表新用戶的角色。所以這就是我迄今爲止所做的。從數據庫的DropDownList使用視圖模型

我UserViewModel:

public class UserModel 
{ 
    [Required] 
    [StringLength(50)] 
    [Display(Name="Username : ")] 
    public string Username { get; set; } 

    [Required] 
    [DataType(DataType.Password)] 
    [StringLength(50, MinimumLength=6)] 
    [Display(Name = "Password : ")] 
    public string Password { get; set; } 


    public Role Role { get; set; } 
} 

而且我HTTPGET方法:

[HttpGet] 
    public ActionResult Registration() 
    { 
     context = new MainDatabaseEntities(); 
     ViewBag.Roles = new SelectList(context.Roles, "RoleId", "RoleDesc"); 
     return View(); 
    } 

從這裏,我不知道我應該做的。我的ViewModel足夠好做我想做的事情(創建和更新用戶)嗎?我應該如何將ViewBag.Roles用於我的註冊視圖?

任何幫助傢伙?我非常感謝!

+0

去http://www.asp.net/mvc/tutorials/older-versions/nerddinner/use-viewdata-and-implement-viewmodel-classes –

+1

這可能會證明對你很有幫助... http:///stackoverflow.com/questions/781987/how-can-i-get-this-asp-net-mvc-selectlist-to-work –

回答

3

景觀:

@Html.DropDownListFor(m => m.RoleId, (SelectList)ViewBag.Roles) 

你應該在你的模型中的角色ID所選擇的項目保存

+0

是的,通過Role對象,我可以得到RoleId並且它可以工作,謝謝! – Traffy

0

您可以使用它像這樣。

@Html.DropDownList("Roles") 

這將創建DropDownList中的ViewBag

0

您需要將ViewBag項目明確地轉換爲預期的類型(IEnumerable<SelectListItem>),作爲ViewBag is a dynamic type

@Html.DropDownListFor(m => m.RoleId,((IEnumerable<SelectListItem>)ViewBag.Roles)) 
+0

不要只是在這裏發佈代碼,解釋它,讓未來的用戶可以更好地理解它 –

+1

@FabioAntunes,補充說明 –

0

首先來看,它顯示你試圖註冊該帳戶。對於遵循循序漸進的過程:

註冊HTTP GET方法中添加以下行

ViewBag.Name =新的SelectList(context.Roles.ToList(), 「姓名」, 「姓名」);

然後HttpPost方法添加以下線:

ViewBag.Name =新的SelectList(context.Roles.ToList(), 「名稱」, 「名稱」);

在下面一行寄存器視圖中添加:

@ Html.DropDownList( 「的UserRole」,(的SelectList)ViewBag.Name,「「)

我希望這會工作。

相關問題