如何从单个调用DB中检索多个项目并绑定到多个下拉列表

时间:2014-03-15 07:42:16

标签: asp.net-mvc razor

MVC新手。

在我的页面中,我有几个下拉菜单。目前这是我的方法,我想重复自己。

我已经创建了一个模型,因此我可以将其重复用于所有下拉列表。

public class NameValueModel
{
    public int Value { get; set; }
    public string Name { get; set; }
}

然后我写了一个数据类来获取每个下拉列表的值

    public IEnumerable<NameValueModel> GetStatus()
    {
       return (from m in ne.Status
               select new NameValueModel { Value = m.StatusID, Name = m.Name }).ToList();
    }

    public IEnumerable<NameValueModel> GetStates()
    {
        return (from m in ne.tblStates
                select new NameValueModel { Value = m.StateId, Name = m.Name }).ToList();
    }

同样,每次下拉都会重复相同的代码。

现在在我的Controller中,我正在调用每个公共方法来填充ViewBag

 public ActionResult Index(FormCollection f)
 {
        ViewBag.StateList = new SelectList(new StudentData().GetStates(), "Value", "Name");
        ViewBag.ProgramType = new SelectList(new StudentData().GetStatus(), "Value", "Name");

        // More of the above
        return View();
 }

我担心的是,我每次下拉都会逐一填充viewBag,我有10个,我对它不满意。是否有更简洁的方法可以获得所有下拉列表的价值到DB,缓存它,一个模型,一个来自控制器的调用,并获得所有绑定值。

1 个答案:

答案 0 :(得分:0)

您可以编写stored procedure来返回多个结果集,并使用DataSet来存储结果。每个DropDownList值都位于结果DataSet内的单独表格中。