IsPostBack原理

获取一个值,该值指示页是第一次呈现还是为了响应回发而加载。

如果是为响应客户端回发而加载该页,则为true(客户端提交表单;否则为false(第一次加载)


IsPostBack

是页面类的一个属性,用来判断页面是提交表单呢,还是首次访问的一个标记。

提交表单时:提交到服务器的表单元素一定要设置name属性(名字),id是设给Dom和jquery用的,服务只认name。


首先新建一个isPostBack.htm页面:

<form action="isPostBack.ashx">
<!--提交到一般处理程序去处理-->

	<input type ="hidden" name="ispostback" value="true" />
	<!--一个隐藏字段,用来提交标记给服务器处理程序-->

	<!--Something else-->
	This is ispostback.htm page content!
	<input type="submit" value="提交" />
</form>



该htm页面提交数据到isPostBack.ashx一般处理程序去处理。isPostBack.ashx做如下处理:

public void ProcessRequest(HttpContext context)
{
	context.Response.ContentType = "text/html";
	string oldContent = File.ReadAllText(context.Server.MapPath("IsPostBack.htm"));
	context.Response.Write(oldContent);
	//读取ispostback.htm作为模版,重新画一个,用来模拟第一次请求服务器。

	string ispostback=context.Request["ispostback"];
	//接受来自htm页面提交的隐藏字段
	//如果能取得提交的内容,则表明此次处理是提交表单请求。
	if (ispostback == "true")
	{
		context.Response.Write("提交表单进入(是postback的)");
	}
	else
	{
		context.Response.Write("首次进入!(不是postback的)");
	}
}

这样的话,如果你首次在浏览器中访问isPostBack.ashx,打印出的是isPostBack.htm的内容和一个首次进入(不是postback)的标记。

点击按钮后会显示提交表单进入的。这就是ASP.NET的IsPostBack的原理

ashx是一个服务器处理程序,页面form提交到服务器的数据都是调用他来处理,其实aspx也是处理程序,只不过是通过.Net封装之后的处理程序,继承自ashx

  我猜测:aspx页面就是一个模版,相当于上面的isPostBack.htm,里面封装了ispostback的隐藏字段,而aspx.cs就是处理程序。提交的处理请求都是给它处理,然后再读模版,把要该的内容画回去。

原文:http://www.2cto.com/kf/201104/88679.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值