Хорошо, я новичок в asp mvc2, и у меня возникли некоторые проблемы с
htmlhelper с именем Html.dropdownlistfor ();
Я хочу представить пользователю список дней недели. И я хочу, чтобы выбранный элемент был привязан к моей модели.
Я создал этот маленький класс, чтобы сгенерировать список дней + короткую запись, которую я буду использовать для хранения в базе данных.
public static class days
{
public static List<Day> getDayList()
{
List<Day> daylist = new List<Day>();
daylist.Add(new Day("Monday", "MO"));
daylist.Add(new Day("Tuesday", "TU"));
// I left the other days out
return daylist;
}
public class Dag{
public string DayName{ get; set; }
public string DayShortName { get; set; }
public Dag(string name, string shortname)
{
this.DayName= name;
this.DayShortName = shortname;
}
}
}
У меня действительно есть идея, если это правильный способ сделать это
Затем я вставил это в свой контроллер:
SelectList _list = new SelectList(Days.getDayList(), "DayShortName", "DayName");
ViewData["days"] = _list;
return View("");
У меня есть эта строка в моей модели
public string ChosenDay { get; set; }
И это, на мой взгляд, для отображения списка:
<div class="editor-field">
<%: Html.DropDownListFor(model => model.ChosenDay, ViewData["days"] as SelectList, "--choose Day--")%>
</div>
Теперь все это прекрасно работает. При первом посещении, но потом, когда я делаю [HttpPost]
Который выглядит следующим образом:
[HttpPost]
public ActionResult Registreer(EventRegistreerViewModel model)
{
// I removed some unrelated code here
// The code below executes when modelstate.isvalid == false
SelectList _list = new SelectList(Days.getDayList(), "DayShortName", "DayName");
ViewData["days"] = _list;
return View(model);
}
Тогда мне будет выдано следующее исключение:
The ViewData item that has the key 'ChosenDay' is of type 'System.String' but must be of type 'IEnumerable<SelectListItem>'.
Это сообщение об ошибке выдается в строке, в которой я отображаю раскрывающийся список.
Я действительно понятия не имею, как решить эту проблему, и попробовал несколько решений, которые я нашел в Интернете. но никто из них действительно не работал.
Ты заранее!