С трудом использовать ASP.NET MVC ViewBag и DropDownListfor

Моя трудность заключается в том, как использовать ViewBag с DropdownListFor ?

В моем controllerе у меня есть:

 TestModel model = new TestModel(); ViewBag.Clients = model.Clients; ViewBag.StatusList = model.StatusList; ViewBag.enumStatus = model.enumStatus; ViewBag.intClient = model.intClient; 

В моей тестовой модели

 public SelectList Clients { get; set; } public SelectList StatusList { get; set; } public ActiveStatus enumStatus { get; set; } public int? intClient { get; set; } 

На мой взгляд

Я хочу использовать DropDownListFor для отображения значений ViewBag, как я могу это сделать?

Вы можете сделать это:

 @Html.DropDownListFor(x => x.intClient, ViewBag.Clients) 

Но я бы рекомендовал вам избегать ViewBag / ViewData и получать прибыль от вашей модели просмотра:

 public ActionResult Index() { var model = new TestModel(); model.Clients = new SelectList(new[] { new { Value = "1", Text = "client 1" }, new { Value = "2", Text = "client 2" }, new { Value = "3", Text = "client 3" }, }, "Value", "Text"); model.intClient = 2; return View(model); } 

и в перспективе:

 @Html.DropDownListFor(x => x.intClient, Model.Clients) 

Лично … Я создаю Список и делаю это.

 public ActionResult SomeAction() { var list = new List(); list.Add(new SelectListItem(){Text = "One", Value="One"}); list.Add(new SelectListItem(){Text = "Two", Value="Two"}); list.Add(new SelectListItem(){Text = "Three", Value="Three"}); list.Add(new SelectListItem(){Text = "Four", Value="Four"}); ViewBag.Clients = list; return View(); } 

а затем, на ваш взгляд, …

 @Html.DropDownListFor(x => x.SomePropertyOnModel, (IEnumerable)ViewBag.Clients); 

Обратите внимание на листинг в элементе Viewbag. Бросок требуется, потому что сумка не имеет представления о том, что объект для Viewbag.Client . Так что бросок там необходим.

 @Html.DropDownListFor(x => x.intClient, new SelectList(Model.Clients, "ClientId", "ClientName"), string.Empty); 

ClientId – это значение раскрывающегося списка.

Имя ClientName – это текст раскрывающегося списка.

string.Empty в конце добавляет пустую запись в раскрывающийся список.

Здесь вы можете найти хорошую ссылку: http://blogs.msdn.com/b/nunos/archive/2010/02/08/quick-tips-about-asp-net-mvc-editor-templates.aspx

  • Неверные формы MVC LoginUrl
  • MVC3 DropDownListFor - простой пример?
  • Динамический анонимный тип в Razor вызывает RuntimeBinderException
  • Геокодирование Google Maps v3 на стороне сервера
  • ASP.net MVC 3 jQuery Validation; Отключить ненавязчивый OnKeyUp?
  • Html.Textbox VS Html.TextboxFor
  • Устранение проблем с анти-подделкой
  • MVC3 Razor DropDownListFor Enums
  • Проверка FileExtension с помощью выборочной проверки создает дубликаты и недопустимые атрибуты data- *
  • Отключить проверку на стороне клиента в MVC 3 «отменить» кнопку отправки
  • Что происходит в BeginProcessRequest ()?
  • Давайте будем гением компьютера.