在asp.net网页中,有时会遇到同一页面多个提交按钮,而asp.net网页只能提交给自身,也就是说,只有一个<form id="myform" runat="server">,网页中的所有内容都包含在此表单中。如果在这样一个网页上只有一个提交动作还好,如果有多个提交事件处理起来可能就比较麻烦,它不像asp那样,每一个提交事件都导向一个<form>。这也是asp.net的一个特点,这个特点也让不少人感到头疼。
多个提交事件如用户登录,站内搜索等共存,可能产生以下问题:
1、验证问题。在用户登录部分如果要用RequireFeildValidator控件检验账号和密码是否为空,在搜索一栏检验关键词一项是否为空,这时,当你点击用户登录按钮时,可会同时触发搜索区的验证事件,会提示“关键词不能为空”。而搜索区的验证本来是要与用户登录验证分开的。这时,asp.net2.0使用ValidationGroup属性来为这种相对独立的验证分组,使其互不干扰。
2、回车键错乱问题。我有个习惯,就是在输入用户名和密码之后,往往按回车键登录,而不是点击网页上的按钮,当一个网页只有一个提交表单时,这是没有问题的,但当有两个以上提交事件时,就会发生错乱。有时你输入用户名和密码,按回车可能执行的是搜索域的事件。这时也需要将其区分开来。具体就是将两个提交事件分别用<asp:Panel>
</asp:Panel>封装起来,panel控件有个属性是DefaultButton,这个就是选定封装区域内点击回车键执行的是哪个提交按钮。比如<asp:Panel ID="XX" runat="server" DefualtButton="bnLogin">....</asp:Panel>