Asp.Net Button的UseSubmitBehavior属性
在某页面上有如下信息,
Html,
<asp:Button ID="btn" runat="server" Text="Click me" OnClick="ButtonClicked" />
<script language="javascript">
function javascriptMethod() {
alert(1);
}
</script>
C#,
protected void ButtonClicked(object sender, EventArgs e)
{
btn.Text = "ddddddddddddddd";
}
protected void Page_Load(object sender, EventArgs e)
{
btn.Attributes.Add("onclick", "javascriptMethod();return true;");
}
我给btn一个服务器端时间,改变他的Text,同时,我给btn绑定一个客户端事件,弹出“1”。
此时我们运行页面并点击按钮,一切都很顺利,弹出“1”以后,Text值被修改。
然后,修改btn的UseSubmitBehavior属性,把他值设置成False,
<asp:Button ID="btn" runat="server" Text="Click me" OnClick="ButtonClicked" UseSubmitBehavior="false" />
这时候再运行页面并单击按钮,结果是只弹出“1”,Text值并没有被修改。在ButtonClicked里设置断点,发现这段代码并没有并执行,这就是UseSubmitBehavior=“false”的效果了。
我们先看没有UseSubmitBehavior的时候页面生成的源代码,btn被翻译成这样,
<input type="submit" name="btn" value="Click me" onclick="javascriptMethod();return true;" id="btn" />
再看看加上UseSubmitBehavior=“false”时:
<input type="button" name="btn" value="Click me" onclick="javascriptMethod();return true;__doPostBack('btn','')" id="btn" />
区别在于,type和onclick。
当type=submit时,按钮的onclick没有跟__doPostBack, 但是因为他是submit同时按钮的返回值是true,form照样被提交,也就是__doPostBack照样被执行。
而当type=button时,__doPostBack被串在了onclick的最后,而当执行到return true的时候,(不论是return什么)脚本已经返回,__doPostBack就被忽略了。
相关文档:
ASP.NET中进行消息处理(MSMQ) 二
在我上一篇文章《ASP.NET中进行消息处理(MSMQ)一》里对MSMQ做了个通俗的介绍,最后以发送普通文本消息和复杂的对象消息为例介绍了消息队列的使用。 本文在此基础上继续介绍MSMQ的相关知识点,最后还是通过一个示例程序来分析MSMQ在实际项目开发中的应 ......
前前后后收到过一些学生的来信,询问ASP.NET的学习顺序问题,在此就向打算系统学习ASP.NET技术的初学者谈谈我的建议。
如果你已经有较多的面向对象开发经验,跳过以下这两步:
第一步 掌握一门.NET面向对象语言,C#或VB.NET。
我强烈反对在没系统学过一门面向对象(OO) ......
Web里加入<sessionState cookieless="false" mode="StateServer" timeout="60" stateNetworkTimeout="3600" sqlCommandTimeout="3600"/>后必须(cmd里运行:Net Start aspnet_state)才可以设置session值。
这一段就是配置应用程序是如何存储Session信息的了。我们以下的各种操作主要是针对这一段配置展 ......