如何从数据库填充DropdownlistFor控件?

时间:2016-12-13 08:46:38

标签: c# asp.net model-view-controller

这是我的控制器代码

 public static List<SelectListItem> GetDropDown()
{
        JurisprudenceDBEntities _db = new JurisprudenceDBEntities();
        var Lawyers = new List<tbl_Lawyer>();
        using (_db)
        {
            Lawyers = _db.tbl_Lawyer.ToList();
        }

    List<SelectListItem> ls = new List<SelectListItem>();

    foreach (var temp in Lawyers)
    {
        ls.Add(new SelectListItem() { Text = temp.Name, Value = temp.LawyerID.ToString() });
    }
    return ls;
}

这是视图中的控件

  @Html.DropDownListFor(x => x.Lawyer)

控制器的名称是案例控制器。

2 个答案:

答案 0 :(得分:0)

像这样:

@Html.DropDownListFor(x => x.Lawyer, Model.GetDropDown(), null, null)

这假设&#34; GetDropDown&#34;方法在你的模型中。如果没有,请改为引用相应的类。

MSDN文档显示了可以传递给DropDownListFor助手的所有可能选项:https://msdn.microsoft.com/en-us/library/system.web.mvc.html.selectextensions.dropdownlistfor(v=vs.118).aspx

答案 1 :(得分:0)

我曾经使用像这样的代码来填充Razor的DropdownListFor。我只是首先在数据库中包含DataBase(DAL):

public static SelectList GetDropDown()
    {
        using (var db = new DAL.JurisprudenceDBEntities())
        {
            var query = db.Lawyers.Select(o => new { o.LawyerID, o.Name, ... } );
            return new SelectList(query.OrderBy(o => o.Name).ToList(), "LawyerID", "Name");
        }
    }

在控件视图中,您只需放置一个Razor元素:

@Html.DropDownListFor(m => m.Lawyer, GetDropDown(), "--Select--", new { @class = "form-control" })