这里先不说题目上的UseSubmitBehavior属性,先说以下几种情况。
一般在你写表单页面的时候,底部会出现两个写有“提交”和“返回”字样的按钮。说白了,我们都知道它们的作用,但一般情况下,我们会对表格的内容增加一些验证,然后就会出现一个难题。由于两个按钮都是web服务器控件(带有runat="server"属性),所以点击按钮后会先进行验证(无论是使用前台的jQuery.validate还是ASP.NET内置的后台管理验证控件,都会先进行验证)。对于“提交”按钮来说,这确实是每个人都想要的,但是对于“返回”按钮来说,我们不希望出现这种情况,只是希望它不需要验证就能立即跳转到上一页。
对于这种情况,我以前的解决办法是把
<asp:Button ID="button_back" runat="server" Text="back" OnClick="button_back_Click" />换成
<input type="button" value="back" onclick="BackToPage();" />这种方式。BackToPage方式完成网页跳转。
相信很多朋友都是这么写的。总之,解决困难就够了。为什么?往下看。
然而,今天,我意外地发现了属性按钮。UseSubmitBehavior,将其设置为false将使“后退”按钮“避免”表单验证,并立即实现click事件方法。这不是大家一直在想的吗?而且按钮都是统一的,不需要额外添加js代码。
为了在这里说清楚,我们不必去想那个按钮。UseSubmitBehavior真正用于“避免”验证。我只是用这个词来表达它完成的实际效果。事实上,按钮控件具有用于屏蔽验证控件的专业属性。是Button.CausesValidation,根据名字应该能掌握一二。
会不会问“即使有这个属性,上面的问题也不是问题,处理起来也很轻松。”
我想对你说:“是这样的!”但前提是你的新项目中只存在后台管理验证。但实际上,我觉得这并不容易。有人这么做吗?总之我还是比较习惯用jQuery.validate来验证软件的(前台接待验证)。让我们学习按钮。再次科学地使用SubmitBehavior。
看一个例子:
前台接待代码:
<asp:Button ID="button_confirm" runat="server" Text="明确" /> <asp:Button ID="button_back" runat="server" Text="回到" onclick="button_back_Click" />在计算机浏览器中查询源代码的方法
前台接待代码:
<asp:Button ID="button_confirm" runat="server" Text="明确" /> <asp:Button ID="button_back" runat="server" Text="回到" UseSubmitBehavior="false" onclick="button_back_Click" />在计算机浏览器中查询源代码的方法
大家可以看到,加入UseSubmitBehavior属性后,分析出的html句子有了明显的不同。看到这里,我如梦初醒。说完UseSubmitBehavior属性,type属性改成了button,和前面的解决方案一样。因为不是submit属性,所以不容易打开jQuery.validate的验证方法(回应上面橙色字体加粗的部分)。这就是为什么UseSubmitBehavior设置为false后,就不需要验证接待处了。这就是玄机。
但是结束了是不是感觉很奇怪?为了更好的实现我们的目标,我们应用了一个新的属性,但是这个属性的值并不是为了更好的实现我们的目标。
整理一下心情,上面的例子一定要从脑子里抹去。UseSubmitBehavior属性与是否打开表验证无关。让我们专注于这个属性本身。毕竟这是题目。
我用一种粗俗的方式查阅了MSDN。
可以看出,关键是图中突出显示的两个系统:
1.手机客户端电脑浏览器提交系统
2.ASP。NET的退款系统
解释,请纠正任何不正确的话。
1.大家可以看看这个连线的第一部分:http://www.th7.cn/Program/net/201309/150415.shtml.
也就是说,计算机浏览器将封装所需的消息格式并发送到网络服务器。网络服务器会对这个消息格式进行分析,进行资产重组,形成响应消息格式,并发回到计算机浏览器。电脑浏览器收到后,会对其进行分析,形成你看到的网页和一些看不见的数据信息。它们之间的所有通信都遵循HTTP协议。
重点说明:HTTP是无状态协议。换句话说,每次计算机浏览器请求时,web服务器都会用新的升级来响应。
2.大家可以看看这个链接说的:http://blog.sina.com.cn/s/blog_7815564501012qgy.html瞄准的是回发系统。希望大家可以按照本文描述的流程,写一个小的Demo,试用一下,感觉会好一些。
Post-posting系统是一个需要自己的网页。这个系统比较容易。如果大家都知道以前的制度,就会发现ASP.NET的后发制是背道而驰的。前一个是无状态的,这个可以存储前一个值作为下一个网页的初始值。
举个具体的例子,就是我们在填一个表格的时候,有很多项,但是在填第二项的时候,不小心点了更新,一切都很顺利。根据第一个系统,应该清除表单中控件上的所有值。由于此时还没有进行数据库查询和加载的实际 *** 作,所以网页上不太可能有任何值。"不过技术组的一个朋友说,"现在这个东西已经很少用了,基础不好用控件进行新项目开发设计。“尴尬的rz~我一直在用。我该怎么办?
两个系统介绍完之后,很可能大家还是有点疑惑。其实此时的我也是一样。下面写一个演示,让整个事情更加清晰明了。使用Fiddler作为一个特殊的工具。
网页显示:
html编码:
<html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server" method="post"> <div> <asp:Label ID="Label1" runat="server" Text="content:" ></asp:Label> <asp:TextBox ID="textbox_content" runat="server" width="500px"></asp:TextBox> <asp:Button ID="button_usesubmitbehavior_true" runat="server" Text="browser-server" onclick="button_usesubmitbehavior_true_Click" /> <asp:Button ID="button_usesubmitbehavior_false" runat="server" Text="postback" UseSubmitBehavior="false" onclick="button_usesubmitbehavior_false_Click" /> </div> </form> </body> </html>网页源代码:
后台管理代码:
public partial class WebForm1 : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { textbox_content.Text = "M"; } protected void button_usesubmitbehavior_true_Click(object sender, EventArgs e) { textbox_content.Text = "true"; button_usesubmitbehavior_true.Text = "1"; button_usesubmitbehavior_false.Text = "2"; } protected void button_usesubmitbehavior_false_Click(object sender, EventArgs e) { textbox_content.Text = "false"; button_usesubmitbehavior_true.Text = "3"; button_usesubmitbehavior_false.Text = "4"; } }*** 作流程:
1、原始网页
2.单击浏览器服务器按钮三次。
3.单击回发按钮三次。
根据这个演示例子,如果只看网页上显示的信息,完全看不出两者的区别,因为后台管理是想两者都完成的(即点击按钮会经历一次page_load模式,然后分别经历click的恶性事件,给输入框和两个按钮添加内容)。但是在使用fiddler专用工具时,你会发现提交的表单内容确实不一样。当UseSubmitBehavior属性设置为false的按钮被提交时,它不会作为表单的参数传递给服务器。
这是唯一的区别吗?我还是觉得不够,但是我真的不写了。
有兴趣的朋友可以思考一下其他的对比例子,比如尝试在页面中添加属性EnableViewState="false",看看点击按钮后的实际效果会是怎样。这是因为我尝试过,但还是觉得证明不了什么。
啊,我终于想起一个。您可以将EnableViewState="false"属性添加到浏览器服务器按钮。嗯,这个比较靠谱。将EnableViewState="false"属性添加到browser-server按钮,以便它没有回发系统。由于Asp.Net控件的默认设置是会有回发系统,所以浏览器-服务器按钮只有移动客户端计算机浏览器的简单提交系统,而回发按钮只有回发系统。页面实际效果显著~
想看实际效果的盆友请试用一下。每个人都可以在留言板上留言交流。请原谅我。我对这篇文章的结论性写作感到如此厌倦。
综上所述,UseSubmitBehavior的属性绝对可以用非主流女生来形容。花时间推广会不会很难很痛苦?
其实一开始我也没想到这篇文章会这么长,但是伴随着科研的深层次,我了解到了ASP的基本原理。NET的最低交互,ASP.NET的网页生命周期,回发系统以及验证相关的问题。讲真,得到很多,很开心。自然要练习活动,再学习训练。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)