通过模型类传递 DropDownListFor

本文关键字:DropDownListFor 模型 | 更新日期: 2023-09-27 18:36:40

我似乎无法破解如何通过我的模型类传递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)
    {
    }

我已经尝试过下拉菜单并试图让它直接通过模型,但没有任何运气。谢谢

通过模型类传递 DropDownListFor

Html.DropDownListFor要求视图是强类型的。如果你的模型是 NewLogin 类型,你可以这样写:

@model MyNamespace.NewLogin
@Html.DropDownListFor(model => model.RoleID, Model.RoleList)

在发布操作中,系统会在NewLogin参数中RoleID选中您。

编辑 :在控制器中,调用操作可以是这样的:

public ActionResult Index()
{
    NewLogin newLogin = PopUserDDL();
    return View(newLogin);
}

视图Model属性将包含所需的数据。这是一个比ViewBags更好的解决方案。