我有一个ASP.NET MVC3应用程序。我有以下内容ViewModel
:
public class MyViewModel
{
public string Year { get; set; }
public string Month {get; set; }
public IEnumerable<SelectListItem> Years
{
get
{
return Enumerable.Range(2000, DateTime.Now.Year - 2000).Select(x => new SelectListItem
{
Value = x.ToString(),
Text = x.ToString()
});
}
}
}
以及以下内容View
:
@model MyNamespace.MyViewModel
@Html.DropDownListFor(
x => x.Year,
new SelectList(Model.Years, "Value", "Text"),
"-- select year --"
)
@Html.DropDownListFor(
x => x.Month,
Enumerable.Empty<SelectListItem>(),
"-- select month --"
)
我用一个从for触发的函数填充DropDownList
for ,该函数运行良好。当表单发布到服务器然后返回视图时,我想将值保留在“月份”DropDownList 中,因为它正确地发生在. 因此我尝试了(除了 jQuery 脚本):Month
jQuery
onchange
DropDownList
Year
Year
public class MyViewModel
{
public string Year { get; set; }
public string Month {get; set; }
public IEnumerable<SelectListItem> Months
{
get
{
if(Year != null)
{
return Enumerable.Range(1, 12).Select(x => new SelectListItem
{
Value = x.ToString(),
Text = x.ToString()
});
}
}
}
并且在View
:
@Html.DropDownListFor(
x => x.Month,
new SelectList(Model.Months, "Value", "Text"),
"-- select month --"
)
我在代码中留下了 Years 以使事情更短。此代码在第一次运行时抛出 aNullReferenceException
因为IEnumerable
是空的。我怎样才能实现我的目标?