Создать список выбора с первым вариантом текста с mvccontrib? - PullRequest
2 голосов
/ 16 июля 2009

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

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

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

Ответы [ 4 ]

2 голосов
/ 16 июля 2009

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

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

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

<%= Html.DropDownList(Constants.StateCountry.STATES, "")%>
1 голос
/ 25 сентября 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);
0 голосов
/ 03 августа 2009

Ничего не расширяя - вы не можете.

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

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

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

0 голосов
/ 17 июля 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);
}
...