Я хочу знать, что является лучшим способом создания dropdownlists в MVC 4? С ViewBag или другой подход?Каков наилучший способ создания dropdownlists в MVC 4?
ответ
Я бы сказал, что, поскольку элементы являются значениями переменной в вашем представлении, что они принадлежат модели просмотра. Модель просмотра не обязательно только для возвращающихся предметов out вид.
Модель:
public class SomethingModel
{
public IEnumerable<SelectListItem> DropDownItems { get; set; }
public String MySelection { get; set; }
public SomethingModel()
{
DropDownItems = new List<SelectListItem>();
}
}
Контроллер:
public ActionResult DoSomething()
{
var model = new SomethingModel();
model.DropDownItems.Add(new SelectListItem { Text = "MyText", Value = "1" });
return View(model)
}
Вид:
@Html.DropDownListFor(m => m.MySelection, Model.DropDownItems)
Populate это в контроллере или везде, где это уместно для сценария.
В качестве альтернативы, для большей гибкости, переключатель public IEnumerable<SelectListItem>
для public IEnumerable<MyCustomClass>
, а затем сделать:
@Html.DropDownFor(m => m.MySelection,
new SelectList(Model.DropDownItems, "KeyProperty", "ValueProperty")
В этом случае вы также, конечно, должны изменить свои действия контроллера для заполнения model.DropDownItems
с экземплярами MyCustomClass
вместо ,
Спасибо, @ Ant P. Как я могу получить dataValueField в этом примере? –
Я хочу написать этот новый SelectList (Model.DisplayList, "TestplanId", "Name") –
@ ElvinArzumanoğlu Я добавил некоторую информацию о том, как вы можете это достичь. –
это не View.Bag это ViewBag –
Я бы порекомендовал вам передать их с помощью 'ViewModel'. – Artless
Хм, у меня есть много dropdownLists в представлении. Я хочу создать их с помощью ViewBag, но не хочу спешить, возможно, есть другие способы, которые лучше, чем viewBag. –