【问题标题】:How to populate a DropdownlistFor control from database?如何从数据库填充 DropdownlistFor 控件?
【发布时间】:2016-12-13 08:46:38
【问题描述】:

这是我的控制器代码

 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)

控制器的名字是case controller。

【问题讨论】:

  • 那么您的错误/问题是什么?仅仅解释你的方法对我们没有帮助。
  • 如何填充下拉列表?

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


【解决方案1】:

我习惯于使用这样的代码来填充 Razor 的 DropdownListFor。我只是首先将数据库包含在项目中(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" })

【讨论】:

  • 我将它放在模型中,但我无法从视图中访问该方法
  • 尝试将方法放在一个单独的类中。我通常将该方法放在另一个类中,并且在 DropDownListFor 中,我只使用 /*class name*/.GetDropDown() 而不是 GetDropDown(),试试这个,让我知道它是否工作正常
【解决方案2】:

像这样:

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

这是假设“GetDropDown”方法在您的模型中。如果没有,请改为引用适当的类。

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

【讨论】:

  • 如何引用类?
  • 我看到它已经是一个静态方法,这很好。那么只需MyClass.GetDropDown()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-16
  • 2016-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-09
相关资源
最近更新 更多