MVC SelectList下拉默认
问题描述:
在SelectList下拉列表中,我喜欢如果Count为1,我喜欢默认药物列表中的值,在这种情况下,它只有1个值。我无法弄清楚如何做到这一点。 我有以下以下几点:MVC SelectList下拉默认
var drugfamilylist = (from dt in DataContext.Drugs
select dt.Drugvalue).Distinct().ToList();
if (drugfamilylist.Count == 1)
{
ViewBag.DrugFamily = new SelectList(drugfamilylist);
}
我试过但IDD也不行:
var drugfamilylist = (from dt in DataContext.Drugs
select dt.Drugvalue).Distinct().ToList();
if (drugfamilylist.Count == 1)
{
ViewBag.DrugFamily = new SelectList(drugfamilylist,drugfamilylist);
}
答
通常我会查看强类型的视图模型。 ViewModel将包含可用项目列表和当前选定元素的相应值。
public class MyViewModel
{
public IList<string> DrugFamilyList;
public string SelectedDrugFamily;
}
在控制器中,您可以填充可用项目列表和选定项目,当可用项目列表为单个元素时。
public ActionResult MyAction()
{
var vm = new MyViewModel();
vm.DrugFamilyList = (from dt in DataContext.Drugs
select dt.Drugvalue).Distinct().ToList();
vm.SelectedDrugFamily = (vm.DrugFamilyList.Count==1) ?
vm.DrugFamilyList[0] : null;
return View(vm);
}
然后使用的HtmlHelper建立选择框:
@Html.DropDownListFor(m => m.SelectedDrugFamily, new SelectList(Model.DrugFamilyList, Model.SelectedDrugFamily))
但是,如果你不想使用推荐的视图模型的模式,你总是可以做到同样的事情ViewBag。
ViewBag.DrugFamilyList = (from dt in DataContext.Drugs
select dt.Drugvalue).Distinct().ToList();
ViewBag.SelectedDrugFamily = (ViewBag.DrugFamilyList.Count==1) ?
ViewBag.DrugFamilyList[0] : null;
然后在视图中使用了类似的帮手:
@Html.DropDownList("desiredfieldname", new SelectList(ViewBag.DrugFamilyList, "", "", ViewBag.SelectedDrugFamily))
这是写自由的手,没有测试。我希望它有帮助。
目前还不清楚你想做什么... –