MVC SelectList Выпадающий по умолчанию - PullRequest
0 голосов
/ 01 декабря 2011

В раскрывающемся списке 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 голосов
/ 02 декабря 2011

Как правило, я бы имел строго типизированный View для 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 ))

Это было написано от руки и не проверялось.Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...