请教ASP.net的Drawdownlist的二级联动问题

我是用js实现无刷新二级联动,联动功能能够实现,但点击提交按钮就出错.要怎么修改?出错信息:回发或回调参数无效。在配置中使用<pagesenableEventValida... 我是用js实现无刷新二级联动,联动功能能够实现,但点击提交按钮就出错.要怎么修改?
出错信息:
回发或回调参数无效。在配置中使用 <pages enableEventValidation="true"/> 或在页面中使用 <%@ Page EnableEventValidation="true" %> 启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用 ClientScriptManager.RegisterForEventValidation 方法来注册回发或回调数据以进行验证。

aspx代码:
<%@ Page Language="C#" MasterPageFile="~/admin/adminMasterPage.master" AutoEventWireup="true" CodeFile="addproduct.aspx.cs" Inherits="admin_addproduct" %>

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" Runat="Server">
<script type="text/javascript">
function change(sel)
{
callserver(sel);
}
function changeselect(id)
{
document.getElementById("<%=this.DDL2.UniqueID%>").length=0;
document.getElementById("<%=this.DDL2.UniqueID%>").options[0]=new Option('请选择车型','');
if(id == "ACURA")
{
document.getElementById("<%=this.DDL2.UniqueID%>").options[1]=new Option('NSX','NSX');
if(id == "AUDI")
{
document.getElementById("<%=this.DDL1.UniqueID%>").options[2] = new Option('A4','A4');
}
}
</script>
<div class="admin">
<asp:DropDownList ID="DDL1" runat="server" onclick=” change(this.value)”>
<asp:ListItem Selected="True">请选择品牌</asp:ListItem>
<asp:ListItem>ACURA</asp:ListItem>
<asp:ListItem>AUDI</asp:ListItem>
</asp:DropDownList>
<asp:DropDownLList ID="DDL2" runat="server">
<asp:ListItem Selected="True">请选择车型</asp:ListItem>
</asp:DropDownList>
<asp:Button ID="btnAdd" runat="server" Text="添加" onclick="btnAdd_Click" />
<asp:SqlDataSource ID=”sql1”…>
</asp:SqlDataSource>
<asp:Label ID="L1" runat="server"></asp:Label>
<asp:Label ID="L2" runat="server"></asp:Label>
</asp:Content>

aspx.cs代码:
public partial class admin_addproduct : System.Web.UI.Page, System.Web.UI.ICallbackEventHandler
{
protected void Page_Load(object sender, EventArgs e)
{
String cbReference = Page.ClientScript.GetCallbackEventReference(this, "arg", "changeselect", null, false);
String callbackScript;
callbackScript = "function callserver(arg)" + "{ " + cbReference + "} ;";
Page.ClientScript.RegisterStartupScript(this.GetType(), "key", callbackScript, true);
}
protected void btnAdd_Click(object sender, EventArgs e)
{
Sql1.Insert(); //把品牌车型插入数据库
L1.Text = DDL1.SelectedValue;
L2.Text = DDL2.SelectedValue;
}
#region ICallbackEventHandler Members
string selecttext = null;
public string GetCallbackResult()
{
return selecttext;
}
public void RaiseCallbackEvent(String eventArgument)
{
selecttext = eventArgument;
}
#endregion
}
展开
 我来答
荧光鼠
2011-03-03 · TA获得超过175个赞
知道答主
回答量:55
采纳率:0%
帮助的人:70.6万
展开全部
可行的解决方法有:

1、在页面的最上面一般是第一行<%@ Page %>脚本中添加 EnableEventValidation="false" 就可以了。(首先考虑的)

2、是Form嵌套,一个页面只能有一个Form,仔细检查代码就可以解决。

3、如果页面含有 DropDownList 或 ListBox这样的控件,可能以下原因造成:

3.1 在下拉菜单中使用ajax,常见于省市联动菜单,可能是由于在aspx页面赋给了下拉菜单初始Item值,在事件回发时提示该错误,将下拉菜单初始Item值删除,在绑定事件中添加Item项。

3.2 原因是 DropDownList 控件的ListItem 的Value 属性 包含汉字.只要将Value 改为英文或数字的就行了.最好在web.config中添加如下语句:
<globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="zh-CN" uiCulture="zh-CN"/>因为 POSTBACK 如果不采用 UTF-8 编码, JAVASCRIPT 会认为有问题。
只改 requestEncoding="utf-8" 就可以了,responseEncoding="utf-8" 不用。

如果还有问题,再把出错信息说下,继续帮你解答!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Storm代理
2023-08-29 广告
"StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,I... 点击进入详情页
本回答由Storm代理提供
genghechuang
2011-03-03
知道答主
回答量:7
采纳率:0%
帮助的人:0
展开全部
我用的是.net自带的<asp:UpdatePanel>实现联动的,你可试一下这种方法,
<asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" RenderMode="Inline" >
<Triggers><asp:AsyncPostBackTrigger ControlID="BigClassID" />
<asp:AsyncPostBackTrigger ControlID="SmallClassID" />
</Triggers>
<ContentTemplate>
<asp:DropDownList ID="BigClassID" runat="server" onselectedindexchanged="BigClassID_SelectedIndexChanged" AutoPostBack="true" >
</asp:DropDownList>
<asp:DropDownList ID="ID="SmallClassID" " runat="server" onselectedindexchanged="ID="SmallClassID" _SelectedIndexChanged" AutoPostBack="true" >
</asp:DropDownList>
</ContentTemplate>
</asp:UpdatePanel>
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
nod22
2011-03-02 · 超过27用户采纳过TA的回答
知道答主
回答量:108
采纳率:0%
帮助的人:54万
展开全部
我也遇见过你的问题,在后台获取不到 城市的名称(我当时做的是省市联动),具体解决方法在后台不用DLL2.selectedvalue获取值,而是用request.params["DLL2"].tostring()来获取值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式