none
dropdownlist联动导致页面回发或回调无效 RRS feed

  • 问题

  • 在现在的网站中用到了省市联动,用的是ajax.dll的ajax方式

    这是页面js和控件定义

    <script language="javascript">           
                //城市------------------------------
                function cityResult()
                {
                    var city=document.getElementById("<% =ddlProvince.ClientID%>");
                    //alert (city.value);
                    b2bmajax.GetCityList(city.value,get_city_Result_CallBack);
                    //alert (city .value);
                }
               
                function get_city_Result_CallBack(response)
                {
                    if (response.value != null)
                    {                   
                        //debugger;
                        document.all("<% =ddlCity.ClientID%>").length=0;               
                    var ds = response.value;
                   
                        if(ds != null && typeof(ds) == "object" && ds != null)
                        {
                            //alert ("a");                   
                            for(var i=0; i<ds.Rows.length; i++)
                        {
                            //alert ("b");
                            var name=ds.Rows[i].province_city;
                          var id=ds.Rows[i].ID;
                          document.all("<%=ddlCity.ClientID%>").options.add(new Option(name,id));
                        }
                        }
                    }               
                    return
                }


                function getData()
                {
                    var province=document.getElementById("ddlProvince");
                    var pindex = province.selectedIndex;
                    var pValue = province.options[pindex].value;
                    var pText  = province.options[pindex].text;
                   
                    var city=document.getElementById("ddlCity");
                    var cindex = city.selectedIndex;
                    var cValue = city.options[cindex].value;
                    var cText  = city.options[cindex].text;
                   
                    /*var area=document.getElementById("DropDownList3");
                    var aindex = area.selectedIndex;
                    var aValue = area.options[aindex].value;
                    var aText  = area.options[aindex].text;*/
                   
                    var txt=document.getElementById("TextBox1");                               

                    document.getElementById("<%=TextBox1.ClientID%>").innerText="省:"+pValue+"|"+pText+"市:"+aText;
                }
            </script>

            所在省:
                    <asp:DropDownList ID="ddlProvince" runat="server" DataValueField="id"
                        DataTextField="province_city">
                    </asp:DropDownList>
                    所在市:
                    <asp:DropDownList ID="ddlCity" runat="server" DataValueField="id" DataTextField="province_city">
                    </asp:DropDownList>
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        <br />
        <asp:Button ID="Button1" runat="server" Text="Button" OnClick="b_click" />

     

    这是页面代码

        protected void Page_Load(object sender, EventArgs e)
        {
            Ajax.Utility.RegisterTypeForAjax(typeof(b2bmajax));
            if (!IsPostBack)
            {
                B2BM.Core.Area area = new B2BM.Core.Area();
                ddlProvince.DataSource = area.Get(0);
                ddlProvince.DataBind();

                this.ddlProvince.Attributes.Add("onclick", "cityResult();");
                //this.ddlCity.Attributes.Add();
            }
        }

        protected void b_click(object sender, EventArgs e)
        {
            Response.Redirect("default.aspx?id="+ddlProvince .SelectedValue);
        }
        protected override void Render(HtmlTextWriter writer)
        {

            ClientScriptManager cs = Page.ClientScript;
            cs.RegisterForEventValidation(ddlProvince.UniqueID, "province");
            cs.RegisterForEventValidation(ddlCity.UniqueID, "city");
            base.Render(writer);
        }

     

     

    可是一点提交就

    回发或回调参数无效。在配置中使用 <pages enableEventValidation="true"/> 或在页面中使用 <%@ Page EnableEventValidation="true" %> 启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用 ClientScriptManager.RegisterForEventValidation 方法来注册回发或回调数据以进行验证。 body {font-family:"Verdana";font-weight:normal;font-size: .7em;color:black;} p {font-family:"Verdana";font-weight:normal;color:black;margin-top: -5px} b {font-family:"Verdana";font-weight:bold;color:black;margin-top: -5px} H1 { font-family:"Verdana";font-weight:normal;font-size:18pt;color:red } H2 { font-family:"Verdana";font-weight:normal;font-size:14pt;color:maroon } pre {font-family:"Lucida Console";font-size: .9em} .marker {font-weight: bold; color: black;text-decoration: none;} .version {color: gray;} .error {margin-bottom: 10px;} .expandable { text-decoration:underline; font-weight:bold; color:navy; cursor:hand; }

    “/”应用程序中的服务器错误。

    回发或回调参数无效。在配置中使用 <pages enableEventValidation="true"/> 或在页面中使用 <%@ Page EnableEventValidation="true" %> 启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用 ClientScriptManager.RegisterForEventValidation 方法来注册回发或回调数据以进行验证。

    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

    异常详细信息: System.ArgumentException: 回发或回调参数无效。在配置中使用 <pages enableEventValidation="true"/> 或在页面中使用 <%@ Page EnableEventValidation="true" %> 启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用 ClientScriptManager.RegisterForEventValidation 方法来注册回发或回调数据以进行验证。

    源错误:

    执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。

    堆栈跟踪:

    [ArgumentException: 回发或回调参数无效。在配置中使用 <pages enableEventValidation="true"/> 或在页面中使用 <%@ Page EnableEventValidation="true" %> 启用了事件验证。出于安全目的,此功能验证回发或回调事件的参数是否来源于最初呈现这些事件的服务器控件。如果数据有效并且是预期的,则使用 ClientScriptManager.RegisterForEventValidation 方法来注册回发或回调数据以进行验证。]
    System.Web.UI.ClientScriptManager.ValidateEvent(String uniqueId, String argument) +2132728
    System.Web.UI.Control.ValidateEvent(String uniqueID, String eventArgument) +108
    System.Web.UI.WebControls.DropDownList.LoadPostData(String postDataKey, NameValueCollection postCollection) +55
    System.Web.UI.WebControls.DropDownList.System.Web.UI.IPostBackDataHandler.LoadPostData(String postDataKey, NameValueCollection postCollection) +11
    System.Web.UI.Page.ProcessPostData(NameValueCollection postData, Boolean fBeforeLoad) +353
    System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includ
    2009年3月7日 3:16

答案

全部回复