MVC SelectList下拉默认值

时间:2011-12-01 16:11:23

标签: model-view-controller

在SelectList下拉列表中,我喜欢如果Count为1,我喜欢默认drugfamilylist中的值,在这种情况下只有1个值。我无法弄清楚如何做到这一点。 我有以下内容:

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

        }

1 个答案:

答案 0 :(得分:0)

通常我会对ViewModel进行强类型查看。 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))

但是,如果您不想使用推荐的ViewModel模式,则可以使用ViewBag完成相同的操作。

ViewBag.DrugFamilyList = (from dt in DataContext.Drugs
                            select dt.Drugvalue).Distinct().ToList();

ViewBag.SelectedDrugFamily = (ViewBag.DrugFamilyList.Count==1) ? 
                                        ViewBag.DrugFamilyList[0] : null;

然后在View中使用类似的帮助器:

@Html.DropDownList("desiredfieldname", new SelectList(ViewBag.DrugFamilyList, "", "", ViewBag.SelectedDrugFamily ))

这是徒手写的,没有经过测试。我希望它有所帮助。