2011-09-16 57 views
0

我需要一些帮助,了解如何在MVC3中使用Html.DropDownListFor,因为文档只是非常糟糕,我在这里找不到我需要的答案。帮助MVC3 Html.DropDownListFor

我有以下型号

public class Users 
{ 
    public virtual User_Roles RoleID {get; set;} 
    public virtual string UserName{get; set;} 
    ... more stuff 
} 

public class User_Roles 
{ 
    public virtual Int32 RoleID {get; set;} 
    public virtual string Role {get; set;} 
} 

我的页面(create_user.cshtml)看起来是这样的:

@model Users 
... stuff 
@Html.LabelFor(m => m.RoleID) 
@Html.DropDownListFor(m => m.RoleID, Model.RoleID.Role, Model.RoleID.RoleID) 

它不断抛出错误"'System.Web.Mvc.HtmlHelper<Users>' does not contain a definition for 'DropDownListFor'"

任何人都可以向我解释如何我可以从数据库中提取角色名称和ID列表,因为这显然不是这样做的方法吗?

+0

我无法在您的模型中看到任何集合类型。下拉列表需要一个集合。 –

回答

2

您需要使用SelectList传递下拉项目。

确保您从控制器检索ViewBag.Roles中的角色。

@Html.DropDownListFor(m => m.RoleId, new SelectList(ViewBag.Roles as System.Collections.IEnumerable, "Id", "Name"), "") 
+0

这工作完美,非常感谢你!我一直忘记ViewBag不仅仅是一个字符串。 – Joshua