2011-12-01 108 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)) 

這是寫自由的手,沒有測試。我希望它有幫助。