Добавить строку текста в DropDownList в ASP.NET MVC - PullRequest
0 голосов
/ 06 июня 2011

На веб-сайте ASP.NET MVC 3 у меня есть представление со следующим кодом (Razor):

@Html.DropDownList("SessionYear", new SelectList(ViewBag.SessionYears as System.Collections.IEnumerable, "", "", Model.SessionYear), String.Empty)

ViewBag.SessionYears - это IEnumerable<int>.

Выходные данныеэто что-то вроде этого:

<select id="SessionYear" name="SessionYear"><option value=""></option>
    <option>2013</option>
    <option selected="selected">2012</option>
    <option>2011</option>
    <option>2010</option>
</select>

Это здорово, однако, что я хотел бы сейчас сделать, это добавить немного текста к тексту, отображаемому в раскрывающемся списке, так что каждый параметр выглядит примерно такэто:

<option>2013-2014</option>
<option selected="selected">2012-2013</option>

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

Могу ли я сделать это с помощью помощника DropDownList,или мне нужно реализовать это по-другому?

РЕДАКТИРОВАТЬ: И хотя я мог бы, вероятно, преобразовать SessionYears в объект, который имеет int и строку для решения этой проблемы, я бы предпочел не делать этого.Но если это то, что я должен сделать, то это то, что я сделаю.

РЕДАКТИРОВАТЬ 2:

Код, который я ожидаю, будет работать:

@Html.DropDownList("SessionYear", new SelectList(ViewBag.SessionYears as System.Collections.IEnumerable, "", (Model.SessionYear + "-" + (Model.SessionYear + 1)), Model.SessionYear), String.Empty)

Однако я получаю следующую ошибку:

DataBinding: 'System.Int32' does not contain a property with the name '2012-2013'.

Что, я полагаю, имеет смысл, так как Model.SessionYear - это int.Вот почему я думаю, что мне нужно создать новый объект, который содержит SessionYear в виде целого числа, а затем другое свойство, которое содержит (SessionYear + "-" + (SessionYear + 1)) (как я делал в прошлом с другими моделями).

Но я бы ожидал, что там будет более легкий путь.

1 Ответ

0 голосов
/ 09 июня 2011

Я не уверен, правильно ли я понимаю вопрос, но почему вы не устанавливаете dataValueField и dataTextField?

Возможно, создайте свой SelectList примерно так:

@Html.DropDownList("SessionYear", new SelectList(ViewBag.SessionYears as System.Collections.IEnumerable, Model.SessionYear, Convert.ToChar(Model.SessionYear) + Convert.ToChar(Model.SessionYear + 1), Model.SessionYear), String.Empty)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...