dropdownlist 保持状态的方法view: <td> <%=Html.DropDownList("LivingCountry", ViewData["LivingCountryViewData"] as IEnumerable<SelectListItem>, "--select one--")%> <%=Html.ValidationMessage("LivingCountryV")%></td>cotroller: DataContext dc = new DataContext();//LINQ TO SQL #region LivingCountry dropdownlist status if (Request.Form["LivingCountry"].Trim().ToString() != "") { var LivingCountryitem = from c in dc.DTCountries select new SelectListItem { Text = c.CountryName, Value = c.CountryName, Selected = (c.CountryName == Request.Form["LivingCountry"].Trim().ToString()) }; ViewData["LivingCountryViewData"] = LivingCountryitem; } else { ViewData["LivingCountryViewData"] = from c in dc.DTCountries select new SelectListItem { Text = c.CountryName, Value = c.CountryName, }; } #endregion
ASP.NET MVC没有ViewState,不要用webform的概念来理解asp.net mvc
数据是保存在Model里,但是Post之后,这个Model对象值没有被保存。需要重新去查询
[OutputCache(CacheProfile = "ProcessInfoCache")]
public ActionResult Welcome()
{
ViewData["now"] = DateTime.Now.ToString();
return View();
}
-------------------------
View:
<span>@ViewData["now"]</span>
------------------------------
web.config:
<system.web>
<caching>
<outputCacheSettings>
<outputCacheProfiles>
<clear/>
<add name="ProcessInfoCache" duration="10" enabled="true" varyByParam="*" />
</outputCacheProfiles>
</outputCacheSettings>
</caching>
</system.web>
-----------------------------
这个例子上面的时间,至少10秒才会更新一次,如果你不停的刷就可以看出效果
<td>
<%=Html.DropDownList("LivingCountry", ViewData["LivingCountryViewData"] as IEnumerable<SelectListItem>, "--select one--")%>
<%=Html.ValidationMessage("LivingCountryV")%></td>cotroller:
DataContext dc = new DataContext();//LINQ TO SQL
#region LivingCountry dropdownlist status
if (Request.Form["LivingCountry"].Trim().ToString() != "")
{
var LivingCountryitem = from c in dc.DTCountries
select new SelectListItem { Text = c.CountryName, Value = c.CountryName, Selected = (c.CountryName == Request.Form["LivingCountry"].Trim().ToString()) };
ViewData["LivingCountryViewData"] = LivingCountryitem;
}
else
{
ViewData["LivingCountryViewData"] = from c in dc.DTCountries
select new SelectListItem { Text = c.CountryName, Value = c.CountryName, };
}
#endregion
要避免刷新被重新初始化的话,直接在该页面上使用Viewstate。也有另一个方法就是保存在CACHE里面。
这都嫌麻烦的话就不要用mvc了