ASP.NETMVC3アプリケーションがあります。私は次のものを持っています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 --"
)
DropDownList
forからトリガーさMonth
れるjQuery
関数をforに入力します。これは、完全に機能します。フォームがサーバーに投稿され、ビューがレンダリングされたときに、「Month」DropDownListの値を保持したいのですが、これはで正しく発生します。したがって、私は(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を除外しました。が空NullReferenceException
であるため、このコードは最初の実行でをスローします。IEnumerable
どうすれば目標を達成できますか?