Button的UseSubmitBehavior屬性
前章
前段时间碰到button控件的一个属性问题UseSubmitBehavior。
在MSDN上查看,UseSubmitBehavior 属性时,有这样一句话
“获取或设置一个布尔值,该值指示 Button 控件使用客户端浏览器的提交机制还是 ASP.NET 回发机制。 ”
" 默认情况下,此属性的值为 true ,从而导致 Button 控件使用浏览器的提交机制。如果指定为 false ,则 ASP.NET 页框架将客户端脚本添加到页面,以将窗体发送到服务器。"
这里讲到 客户端浏览器的提交机制 和 ASP.NET 回发机制 ,这两种机制有些不明白。于是在论坛上发了个帖子,只有一个人简单的回复了下。讲的内容也只是先前我再msdn上看的介绍UseSubmitBehavior的内容。
可能是问题没有问清楚,于是google了下。发现了一篇文章http://blog.csdn.net/W3031213101/archive/2007/12/18/1946769.aspx 内容如下:
现在就分段进行分析下:
页面回传与js调用服务端事件、PostBack的原理
第一章、 Asp.net 中服务端控件事件是如何触发的
一. WebControls 中的 Button 和 HtmlControls 中的 Type 为 submit 的 HtmlInputButton
<asp:ImageButton ID="ImageButton1" runat="server"
οnclick="ImageButton1_Click" />
{
response.write("1");
}
protected void Button4_Click(object sender, EventArgs e)
{
response.write("2");
}
发现没有什么可以引发事件触发的代码,代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head><title>
无标题页
</title></head>
<body>
<form name="form1" method="post" action="default.aspx" id="form1">
<div>
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTEzODk5NzQ4MWQYAQUeX19Db250cm9sc1JlcXVpcmVQb3N0QmFja0tleV9fFgEFDEltYWdlQnV0dG9uMZP+1UiluyDtaGTdzOnSzX5ckWf7" />
</div>
<script type="text/javascript">
//<![CDATA[
var theForm = document.forms['form1'];
if (!theForm) {
theForm = document.form1;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
//]]>
</script>
<div>
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWAwK53pImAoznisYGAtLCmdMIz6upEG93aRH4h08lrQNs2kst81M=" />
</div>
<h2>正在建设中....</h2>
<input type="button" name="Button1" value="Button" οnclick="javascript:__doPostBack('Button1','')" id="Button1" />
<input type="image" name="ImageButton1" id="ImageButton1" src="" style="border-width:0px;" />
</form>
</body>
</html>
但是当我们点击button 和imagebutton的时候,事件方法会触发,输出1,或2。我想这就是客户端浏览器的提交机制。
如:
利用 GetPostBackEventReference 给客户端生成 __doPostBack()
前台
{
return this .Page.GetPostBackEventReference( this .Button1,"haha");
}
{
Response.Write(" 这个是链接的 PostBack");
}
else
{
Response.Write(" 这个不是链接的 PostBack");
}
析: 上述主要告诉我们,<asp:button/>和<asp:imagebutton />是不能通过 Request.Form[“__EVENTTARGET”]方法获取到触发控件的编号的。作者告诉了一种验证的方法。但是觉得不太好,自己想了下,之前查过的 UseSubmitBehavior刚好验证这里。
{
response.write("ddd");
}
例3:
<asp:Button ID="Button4" runat="server" Text="Button" οnclick="Button4_Click" UseSubmitBehavior="false" OnClientClick="alert('hello');"/>
后台:
protected void Button4_Click(object sender, EventArgs e)
{
response.write("ddd");
}
与例2相比多了OnClientClick="alert('hello');;执行后查询源代码
<input type="button" name="Button4" value="Button" οnclick="alert('hello');__doPostBack('Button4','')" id="Button4" />
发现__doPostback()js方法在,前面多了句alert('hello');
首先先弹出了hello,(客户端事件),然后输出了ddd(服务器段事件,只不过由客户端触发的).再看下面的例子,
例4:
<asp:Button ID="Button4" runat="server" Text="Button" οnclick="Button4_Click" UseSubmitBehavior="false" OnClientClick="alert('hello');return false;"/>
后台:
protected void Button4_Click(object sender, EventArgs e)
{
response.write("ddd");
}
与例3相比alert('hello');return false;多了句return false;这也是我们讨论的关键。
执行,查看源代码
<input type="button" name="Button4" value="Button" οnclick="alert('hello');return false;__doPostBack('Button4','')" id="Button4" />
__doPostBack('Button4','')
依然在,前面多了句return false;在看看功能上发现弹出了hello,但是没有输出ddd.这就是我们想要的。
Button的UseSubmitBehavior屬性相关推荐
- HTML_DOM的node屬性
DOM沒搞通,今天繼續學DOM.學三個node屬性,nodename,nodevalue,nodetype屬性.name返回節點名稱,value返回節點值,type返回節點類型.貌似簡單,這裏我用自己 ...
- 控制項學習四(屬性與事件)
四.初探控制項屬性(Property)的建立 1.當我們建立一個控制項(或類別),可以建立控制項的屬性(property),屬性多半是一個值,或是指到另外一個物件,或是一個集合. 請注意,在該屬性宣告 ...
- c# 一些控件常用屬性
Form: ControlBox:移除窗體按鈕(最大化.最小化.關閉組),並從左側移除「系統菜單」 Opacity:控制窗體透明度 ActiveControl:指出窗體上當前哪 ...
- bipush java,Java Opcodes.BIPUSH屬性代碼示例
本文整理匯總了Java中org.objectweb.asm.Opcodes.BIPUSH屬性的典型用法代碼示例.如果您正苦於以下問題:Java Opcodes.BIPUSH屬性的具體用法?Java O ...
- Ios: 如何保護iOS束文件屬性列表,圖像,SQLite,媒體文件
Ios: 如何保護iOS束文件屬性列表,圖像,SQLite,媒體文件 我創建了Hello World示例項目,然後添加data.plist文件到資源文件夾.現在人們可以很容易得到束文件解壓縮.國際音標 ...
- 善用 CSS 中的 table-layout 屬性加快 Table 的顯示速度
在很久以前我們都是用 Table 在排版的,我相信現在還是有不少人還是在用 Table 進行排版而非現在較為流行的 CSS 排版,使用 Table 排版最大的好處就是版面在各瀏覽器中顯示比較不會亂掉. ...
- Mcad学习笔记之通过反射调用類的方法,屬性,字段,索引器(2種方法)
相关文章导航 Sql Server2005 Transact-SQL 新兵器学习总结之-总结 Flex,Fms3相关文章索引 FlexAir开源版-全球免费多人视频聊天室,免费网络远程多人视频会议系统 ...
- java中的terminated_Java State.TERMINATED屬性代碼示例
本文整理匯總了Java中java.lang.Thread.State.TERMINATED屬性的典型用法代碼示例.如果您正苦於以下問題:Java State.TERMINATED屬性的具體用法?Jav ...
- java pixelformat_Java PixelFormat.OPAQUE屬性代碼示例
本文整理匯總了Java中android.graphics.PixelFormat.OPAQUE屬性的典型用法代碼示例.如果您正苦於以下問題:Java PixelFormat.OPAQUE屬性的具體用法 ...
- python keyboard backspace_Python curses.KEY_BACKSPACE屬性代碼示例
本文整理匯總了Python中curses.KEY_BACKSPACE屬性的典型用法代碼示例.如果您正苦於以下問題:Python curses.KEY_BACKSPACE屬性的具體用法?Python c ...
最新文章
- 产品层级提升,产品实战系列之教你如何对货运APP进行运单界面优化
- POST 变为AJAX提交代码。
- MFC复选框CheckBox使用
- java 右移两位_java左移右移运算符
- opera在我的博客发不了帖子,郁闷
- Nacos服务注册接口
- eBPF技术应用云原生网络实践系列之基于socket的service | 龙蜥技术
- Shell脚本/bin/bash^M: bad interpreter错误解决方法
- python显示乱码_python2显示乱码问题实战详解
- 核心动画——CAAnimation
- DelphiXE开发坑
- plt是什么格式文件
- 胡波外挂做模具3D装配的方法
- struts的增删查改
- HE4484E芯片资料
- PTA-IP地址转换
- [从头读历史] 第267节 诗经 邶风
- 【OpenBMC 系列】2.OpenBMC镜像编译流程
- 基于Open CV的植物图像分类识别项目
- 5、6月程序员“薪资被应届生倒挂“现象明显,跳槽还是等待?
热门文章
- adb脚本选择语句_Python开发:王者荣耀自动刷金币脚本
- 羊车门问题看到吐血后的理解----一千七百字小作文+Python代码验证,帮你从质到量上理解,这再看不明白算我输!
- 360无痕浏览器_功能强大好用的浏览器
- C++“”字符与字符“”相加是连接
- Python 核心编程 (全)
- 《Ansible权威指南 》一1.6 Ansible应用场景
- 2月中国万网域名总量净增2.1万个 份额突破24%
- 大型网站架构的演化[转]
- Linux文件系统的创建与管理(上)
- 加载项目失败的解决办法