我有一個ASP.NET MVC3應用程序。我有以下ViewModel
:如何在ASP.NET MVC3服務器調用之間保留DropDownList值
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
爲Month
與jQuery
功能被觸發從DropDownList
onchange
爲Year
,它完美的作品。當表單被髮布到服務器,然後視圖被回顯時,我想將值保存在'Month'DropDownList中,因爲它正確地爲Year
發生。因此,我試過(除了jQuery腳本):
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 --"
)
我留下了歲月的代碼,以使事情更短。此代碼在第一次運行時會拋出NullReferenceException
,因爲IEnumerable
爲空。我怎樣才能實現我的目標?
只是一個小問題,爲什麼你打算根據今年的變化事件填充月份?只是好奇,因爲它似乎你想同時填充兩個。 – IyaTaisho
@IyaTaisho,我正在創建一個應用程序來顯示統計信息,而且我也用相同的邏輯來填充日子。我也想阻止用戶選擇一個月而不選擇年份 – CiccioMiami