ASP.Net 2.0&UP ViewState丢失问题
没有仔细研究过ViewState,最近出现的问题让人头痛不已。
ViewState会在某些特定情况下消失,且很难捕捉到。查了一些技术文章,都是说ViewState的机制是将信息存在页面的hidden input里面,似乎不可能存在这些问题,给出的理由无非是在某个地方被某个不小心的程序员给禁掉或清除掉了。但找了很久也没找到这个地方......
一个偶然的机会看到了一篇关于ViewState机制的文章,当看到下面这段文字时顿时豁然开朗
----------------------------我是分割线-------------------------------------------------------------------------
呵呵,有的。从APS.NET2.O开始,微软为我们提供了!顾名思义,这个类可以将VIEWSTATE存储在Session中,而不是Hidden Input中。这可以用于大数量级的VIEWSTATE处理,它的实现也异常简单
---转自“自由飞” http://www.cnblogs.com/freeflying/archive/2010/01/03/1638264.html
----------------------------我是分割线-------------------------------------------------------------------------
果然在基类中找到了如下方法:
///设置 ViewState对象 保存在Session中
protected override PageStatePersister PageStatePersister
{
get
{
return new SessionPageStatePersister(this);
}
}
原来自从2.0以来,多了一种选择,可以将ViewState信息存到Session中,Session和页面相比具有安全、节省带宽资源等好处、减少客户端资源消耗,但是但是但是缺点也不少。由于实际保存在Session中,Session的所有缺点都会具备。如果没有个好的Session管理车略极容易出现丢ViewState丢失的情况。
所以大家在选择ViewState的保存机制时要小心啊。除非必要建议还是用它本来的方式吧。
///设置 ViewState对象 保存在页面中
protected override PageStatePersister PageStatePersister
相关文档:
在我们传统的网站建设中通常是先设计网站页面,再利用开发工具,在网站的框架内进行功能设计。这样的网站建设存在很多弊端,其中最突出的缺点是不利于小组共同开发,各环节之间依赖性太强。
在ASP.NET中我们可以利用后台编码,把HTML用户界面设计(颜色、美学等)与页面代码区分开来。这样就可以解决我们小组的并行开发问 ......
控制网站分辨率 我们可以 用 frameset
虽然 asp.net不支持这个属性 但是功能是可以实现的
如 :
<frameset name="main" rows="105,*" frameborder="no" border="0" framespacing="0">
<frame src="xx.aspx" name="topFrame" scrolling="No" noresize="noresize" id="topFrame" title="topFrame" /> ......
using System;
using System.Collections;
using System.ComponentModel;
using System.Web;
using System.Web.SessionState;
using System.Timers;
using System.Data;
using System.Data.SqlClient;
namespace SMS_joke
{
/// <summary>
/// Global 的摘要说明。
/// </summary>
public class ......
PRB:在使用 Response.End、Response.Redirect 或 Server.Transfer 时出现 ThreadAbortException
症状
如果使用 Response.End、Response.Redirect 或 Server.Transfer 方法,将出现 ThreadAbortException 异常。您可以使用 try-catch 语句捕获此异常。
原因
Response.End 方法终止页的执行,并将此执行切换到应用程序 ......
asp.net开发中,通常需要做一些客户端验证。当我们默认在一个页面中加个button控件时,这个Button被asp.net 输出为一个Submit按钮。 asp:Button ID=Button1 runat=server Text=Button on click=Button1_Click /
在_doPostBack方法内,通过theForm.submit()来使数据提交到服务器。
这样很容易看出,如 果我们想要在数据提� ......