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,缓存它,一个模型,一个来自控制器的调用,并获得所有绑定值。
答案 0 :(得分:0)
您可以编写stored procedure
来返回多个结果集,并使用DataSet
来存储结果。每个DropDownList
值都位于结果DataSet
内的单独表格中。