回发或回调参数无效

来源:互联网 发布:淘宝店铺人气提升 编辑:程序博客网 时间:2024/04/27 20:44

       写代码时出现一个很常见的问题,回发或回调参数无效.

       前台代码如下

 <form id="form1" runat="server">         <div><asp:Label ID="Label1" runat="server" Text="Label">学号请输入1或2;姓名请输入小红或小蓝</asp:Label>        </div>        <asp:RadioButton ID="rbnStuNo" runat="server" GroupName="tbTest" Text="学号"    />        <asp:RadioButton ID="rbnStuName" runat="server" GroupName="tbTest" Text="姓名" />        <asp:TextBox ID="txtQuery" runat="server"></asp:TextBox>        <asp:LinkButton ID="lbtQuery" runat="server" OnClick="lbtQuery_Click1">查询</asp:LinkButton>        <asp:Table ID="tbTest" runat="server">        </asp:Table>     </form>

 

         前台界面如下:

          代码很简单,不复杂,但是就是不停的报错.如果把EnableEventValidation设置为"false",不报错,但是linkbutton不管用了.后来发现查询还是管用的,前提是没有点击单选框,直接输入文本,点击查询是可以查询出数据的.但是如果学号,姓名单选框,点击任意一个之后,查询就不管用了.

      网上说出现这个问题,无非是这几个方面.

 

一 是 Form嵌套,一个页面只能有一个Form,仔细检查代码就可以解决。
二 是 在下拉菜单中使用ajax,常见于省市联动菜单,可能是由于在aspx页面赋给了下拉菜单初始Item值,在事件回发时提示该错误,将下拉菜单初始Item值删除,在绑定事件中添加Item项。
三 是 if (!Page.IsPostBack)
四 是 DropDownList 控件的ListItem 的Value 属性包含汉字.只要将Value 改为英文或数字的就行了。

 

       但是以上这几个要么我不符合,要么改了也没效果.而且使用了ClientScriptManager.RegisterForEventValidation 方法来注册回发或回调数据以进行验证还是没用.

 

      最后把代码在新建的一个页面中发现能够执行,前台是重新拖控件整的,后台基本完全复制粘贴过去的.所以问题出现在前台.最后发现

 <asp:RadioButton ID="rbnStuNo" runat="server" GroupName="tbTest" Text="学号"    /> <asp:RadioButton ID="rbnStuName" runat="server" GroupName="tbTest" Text="姓名" /> <asp:Table ID="tbTest" runat="server">

          单选框的GroupName和Table的ID是同样的,都是tbTest,修改源代码中的GroupName为tbTest1,代码正确执行.而且EnableEventValidation也不用设置为false就可以正常执行.

 

       解决完问题,发现问题非常非常简单,但是它却花费了我N久N久的时间.我想我以后再也不会给GroupName起名起的和ID重复的,纯粹是我太懒了,起个名懒得想.而且我的窗体名和解决方案是一样的,这个尽管没有什么影响,但是以后还是注意点吧.