Создать список выбора с текстом первого варианта с помощью mvccontrib?

Попытка создать список выбора с текстом первого параметра, установленным в пустую строку. В качестве источника данных у меня есть список класса GenericKeyValue со свойствами "Key" и "Value". Мой текущий код выглядит следующим образом.

                <%= this.Select(x => x.State).Options(ViewData[Constants.StateCountry.STATES] as IList<GenericKeyValue>, "Value", "Key").Selected(Model.State) %>

Это заполняет список выбора состояниями, однако на данный момент я не уверен в элегантном способе получить текст первой опции пустой строки.


person aherrick    schedule 16.07.2009    source источник
comment
Я хотел сделать это с помощью свободного подхода, который предоставляет MVC Contrib, я понимаю, что это можно сделать с помощью HTML-помощника MVC Drop Down List по умолчанию.   -  person aherrick    schedule 17.07.2009


Ответы (4)


«Попытка создать список выбора с текстом первой опции, установленным в пустую строку». Стандартный способ не беглый, но требует меньше работы:

ViewData[Constants.StateCountry.STATES] = SelectList(myList, "Key", "Value");

в контроллере и в представлении:

<%= Html.DropDownList(Constants.StateCountry.STATES, "")%>
person keithm    schedule 16.07.2009

Конечно, вы можете, но вы добавляете его в свой список, который вы привязываете к раскрывающемуся списку...

List<State> list = _coreSqlRep.GetStateCollection().OrderBy(x => x.StateName).ToList();
list.Insert(0, new State { Code = "Select", Id = 0 });
ViewData["States"] = new SelectList(list, "Id", "StateName", index);
person James Fleming    schedule 24.09.2009

Или это...

Ваше мнение;

<%=Html.DropDownList("selectedState", Model.States)%>

Ваш контроллер;

public class MyFormViewModel
{
    public SelectList States;
}

public ActionResult Index()
{
   MyFormViewModel fvm = new MyFormViewModel();
   fvm.States = new SelectList(Enumerations.EnumToList<Enumerations.AustralianStates>(), "Value", "Key", "vic");

   return(fvm);
}
person griegs    schedule 17.07.2009

Без расширения ничего - нельзя.

Вот что говорит автор:

Один последний момент. Целью MvcFluentHtml было оставить мнения вам. Мы сделали это, позволив вам определять свое собственное поведение. Тем не менее, это не без мнений относительно практики. Например, объект Select не имеет функциональности «первого варианта». Это потому, что, на мой взгляд, добавление опций к select не касается представления.

Редактировать:
С другой стороны, в новейшем исходном коде есть метод 'FirstOption' для Select.
Загрузите MvcContrib через svn, соберите и используйте.

person Arnis Lapsa    schedule 03.08.2009