2011-12-01 77 views
0

在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); 

     } 
+0

目前还不清楚你想做什么... –

回答

0

通常我会查看强类型的视图模型。 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)) 

这是写自由的手,没有测试。我希望它有帮助。