Я перешел на MVC 3 из Webforms, и у меня возникли проблемы с обучением.Я создал ViewModel, который должен заполнить 3 отдельных списка выбора значениями Месяц, День, Год в моем _Header.Я думаю, что у меня есть проблема со структурой.Конечным результатом является то, что я вызываю необработанное исключение в службе www на моем компьютере, и Visual Studio выскакивает и хочет, чтобы я его отладил.Любая помощь будет с благодарностью!
Вот мой код.
DateSearchViewModel.cs
namespace DH.ViewModels
{
public class DateSearchViewModel
{
//MONTH DROPDOWN LIST
public class MonthViewModel
{
public int ID { set; get; }
public string Month { set; get; }
}
private List<MonthViewModel> _months;
public List<MonthViewModel> Months
{
get
{
if (_months == null)
{
_months = new List<MonthViewModel>();
_months.Add(new MonthViewModel { ID = 1, Month = "Jan" });
_months.Add(new MonthViewModel { ID = 2, Month = "Feb" });
_months.Add(new MonthViewModel { ID = 3, Month = "Mar" });
_months.Add(new MonthViewModel { ID = 4, Month = "Apr" });
_months.Add(new MonthViewModel { ID = 5, Month = "May" });
_months.Add(new MonthViewModel { ID = 6, Month = "Jun" });
_months.Add(new MonthViewModel { ID = 7, Month = "Jul" });
_months.Add(new MonthViewModel { ID = 8, Month = "Aug" });
_months.Add(new MonthViewModel { ID = 9, Month = "Sep" });
_months.Add(new MonthViewModel { ID = 10, Month = "Oct" });
_months.Add(new MonthViewModel { ID = 11, Month = "Nov" });
_months.Add(new MonthViewModel { ID = 12, Month = "Dec" });
}
return _months;
}
}
public int SelectedMonthID { set; get; }
//DAY DROPDOWN LIST
public class DayViewModel
{
public int ID { set; get; }
public string Day { set; get; }
}
private List<DayViewModel> _days;
public List<DayViewModel> Days
{
get
{
if (_days == null)
{
_days = new List<DayViewModel>();
_days.Add(new DayViewModel { ID = 1, Day = "1" });
_days.Add(new DayViewModel { ID = 2, Day = "2" });
_days.Add(new DayViewModel { ID = 3, Day = "3" });
_days.Add(new DayViewModel { ID = 4, Day = "4" });
_days.Add(new DayViewModel { ID = 5, Day = "5" });
_days.Add(new DayViewModel { ID = 6, Day = "6" });
_days.Add(new DayViewModel { ID = 7, Day = "7" });
_days.Add(new DayViewModel { ID = 8, Day = "8" });
_days.Add(new DayViewModel { ID = 9, Day = "9" });
_days.Add(new DayViewModel { ID = 10, Day = "10" });
_days.Add(new DayViewModel { ID = 11, Day = "11" });
_days.Add(new DayViewModel { ID = 12, Day = "12" });
_days.Add(new DayViewModel { ID = 1, Day = "13" });
_days.Add(new DayViewModel { ID = 2, Day = "14" });
_days.Add(new DayViewModel { ID = 3, Day = "15" });
_days.Add(new DayViewModel { ID = 4, Day = "16" });
_days.Add(new DayViewModel { ID = 5, Day = "17" });
_days.Add(new DayViewModel { ID = 6, Day = "18" });
_days.Add(new DayViewModel { ID = 7, Day = "19" });
_days.Add(new DayViewModel { ID = 8, Day = "20" });
_days.Add(new DayViewModel { ID = 8, Day = "21" });
_days.Add(new DayViewModel { ID = 8, Day = "22" });
_days.Add(new DayViewModel { ID = 8, Day = "23" });
_days.Add(new DayViewModel { ID = 8, Day = "24" });
_days.Add(new DayViewModel { ID = 8, Day = "25" });
_days.Add(new DayViewModel { ID = 8, Day = "26" });
_days.Add(new DayViewModel { ID = 8, Day = "27" });
_days.Add(new DayViewModel { ID = 8, Day = "28" });
_days.Add(new DayViewModel { ID = 8, Day = "29" });
_days.Add(new DayViewModel { ID = 8, Day = "30" });
_days.Add(new DayViewModel { ID = 8, Day = "31" });
}
return _days;
}
}
public int SelectedDayID { set; get; }
//YEAR DROPDOWN LIST
public class YearViewModel
{
public int ID { set; get; }
public string Year { set; get; }
}
private List<YearViewModel> _years;
public List<YearViewModel> Years
{
get
{
if (_years == null)
{
_years = new List<YearViewModel>();
_years.Add(new YearViewModel { ID = 1, Year = "2009" });
_years.Add(new YearViewModel { ID = 2, Year = "2010" });
_years.Add(new YearViewModel { ID = 3, Year = "2011" });
_years.Add(new YearViewModel { ID = 4, Year = "2012" });
}
return _years;
}
}
public int SelectedYearID { set; get; }
}
}
CommonController.cs:
[ChildActionOnly]
public ActionResult _Header()
{
DateSearchViewModel DateVM = new DateSearchViewModel();
return View(DateVM);
}
_Header.cshtml:
@model DH.ViewModels.DateSearchViewModel
@Html.DropDownListFor(x => x.SelectedMonthID, new SelectList(Model.Months, "ID", "Month"), "--Select--")
@Html.DropDownListFor(x => x.SelectedDayID, new SelectList(Model.Days, "ID", "Day"), "--Select--")
@Html.DropDownListFor(x => x.SelectedYearID, new SelectList(Model.Years, "ID", "Year"), "--Select--")
_Layout.cshtml:
@{Html.RenderAction("_Header", "Common");}