На веб-сайте 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))
(как я делал в прошлом с другими моделями).
Но я бы ожидал, что там будет более легкий путь.