asp.net MVC如何保存ViewState状态?
页面使用model绑定,如果页面有下拉框之类的值(需要从数据库取),但是每次Post的时候,都要重新赋值,导致额外的开销,有没有好的方法,像webform里加载一次,第2次默认从viewState还原????就是从数据库取一次值,绑定到DropDownList,后面的表单提交或者刷新,把DropDownListFor值恢复回来,而不用在去数据库查询???
[解决办法]
mvc就不能用viewstate了,在contoller里实现状态保持机制吧..
[解决办法]
将DropDownList的数据保存到model里头 用model来存呢,或者你将数据格式化成json存到页面的hidden域中
[解决办法]
<%= Html.DropDownList("dplProvince", ViewData["ProvinceList"] as List<SelectListItem>)%>
你的读取数量大么。。
我做这个的时候 你问的这个问题基本上都被我忽略了。
查查MVC缓存
[解决办法]
mvc没用过,,,
[解决办法]
确实,只能保存表单提交的值
[解决办法]
那就用webform呗,用webform的时候嫌垃圾代码多,用了mvc又嫌麻烦...
[解决办法]
可以用 cache, mvc里的 model state 和 view state 有些类似,但是很不幸,下拉列表里的项model state 不管
[解决办法]
controller:
[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秒才会更新一次,如果你不停的刷就可以看出效果
[解决办法]
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
[解决办法]
viewState webfrom里的 如果想实现 就用缓存吧
------解决方案--------------------
VIEWSTATE是不能跨页的哦~
要避免刷新被重新初始化的话,直接在该页面上使用Viewstate。
也有另一个方法就是保存在CACHE里面。
[解决办法]
cache,session可以用,但没有了页面状态
[解决办法]
有ViewData 吧
[解决办法]
ViewData只能将数据从一个页面传递到下一个页面吧
[解决办法]
你post过去什么东西重新绑定一遍不就好了
这都嫌麻烦的话就不要用mvc了
[解决办法]
可用TempData这个dictionary的数据结构来保存,不过要小心,这里面的数据要过期的。
[解决办法]
有个tempstate
[解决办法]
我们用的时候,是想把那个查询条件存起来,下一页的时候继续用。开始是存到session里面,但我总觉得这个很容易丢失,所以不想用这个,结果同事想了个招儿:每次来了就重新存一下。。。