我似乎无法破解如何通过我的Model类传递DropDownListFor
,
我只能使用标准dropdownlist
来计算如何做到这一点。我将在过去发布我是如何做到的
public class NewLogin
{
public string UserRole { get; set; }
public int RoleID { get; set; }
public SelectList RoleList { get; set; }
}
以下是我在LinQ语句中获取DDL数据的方法,是否有更有效的方法?
public NewLogin PopUserDDL()
{
NewLogin nl = new NewLogin();
using (database db = new database())
{
nl.RoleList = new SelectList(GetRolesForDDL(), "RoleID", "UserRole");
}
return nl;
}
public List<NewLogin> GetRolesForDDL()
{
using (database db = new database())
{
return (from r in db.UserRole
select new NewLogin
{
UserRole = r.Role,
RoleID = r.RoleID
}).ToList();
}
}
我在我的视野中称它为像
@Html.DropDownList("lstRoles",(SelectList)ViewBag.RolesList)
我正在传递它
public ActionResult Index(NewLogin newlogin, int lstRoles)
{
}
我尝试过下拉并试图直接通过模型,但没有任何运气。 谢谢
答案 0 :(得分:2)
Html.DropDownListFor
要求您的视图是强类型的。如果您的模型类型为NewLogin
,则可以这样写:
@model MyNamespace.NewLogin
@Html.DropDownListFor(model => model.RoleID, Model.RoleList)
在您的帖子操作中,您会在RoleID
参数中选择NewLogin
。
编辑:在您的控制器中,您的呼叫操作可以是:
public ActionResult Index()
{
NewLogin newLogin = PopUserDDL();
return View(newLogin);
}
视图的 Model
属性将包含您需要的数据。这是比ViewBags
更好的解决方案。