ICallbackEventHandler, RaiseCallbackEvent not firing

本文关键字:firing not RaiseCallbackEvent ICallbackEventHandler | 更新日期: 2023-09-27 18:16:05

我有以下Javascript:

        function processText(n)
        {                
            CallServer("1" + n.id + "&" + n.value, "");
        }
        function ReceiveServerData(arg, context)
        {
            alert(arg);
        }

对于我的代码:

 protected void Page_Load(object sender, EventArgs e)
    {
        ClientScriptManager cm = Page.ClientScript;
        String cbRef = cm.GetCallbackEventReference(this, "arg", "ReceiveServerData", "context");
        String callbackscript = "function CallServer(arg, context) {" + cbRef + "; }";
        cm.RegisterClientScriptBlock(this.GetType(), "CallServer", callbackscript, true);
        if (Request.QueryString["stationID"] != null)
        {
            isIndividual = true;
            stationID = Request.QueryString["stationID"];
            EncodeDecode objServers = new EncodeDecode(HttpContext.Current.Server.MapPath("~/App_Data/"));
            if (!IsPostBack)
            {
                List<IServerConfig> serverConfig = objServers.GetServerConfiguration(stationID);
                Session["ServerConfig"] = serverConfig;
                Session["dctPropertyControls"] = new Dictionary<string, PropertyObj>();
            }
            BindDynamicControls(Session["ServerConfig"] as List<IServerConfig>);
        }
    }
    public void RaiseCallbackEvent(String eventArgument)
    {
        int iTyped = int.Parse(eventArgument.Substring(0, 1).ToString());
        if (iTyped != 0) //Process Text Fields
        {
            string controlName = eventArgument.Substring(1, eventArgument.IndexOf("&")).ToString();
            string controlValue = eventArgument.Substring(eventArgument.IndexOf("&")).ToString();
            //Txtid += -1;                
            Dictionary<string, PropertyObj> dctPropertyObj = Session["dctPropertyControls"] as Dictionary<string, PropertyObj>;
            PropertyObj propertyObj = dctPropertyObj[controlName];
            propertyObj.property.SetValue(propertyObj.owner, controlValue, null);                
            this.sGetData = "Done";
        }
    }
    public String GetCallbackResult()
    {
        return this.sGetData;
    }

processstext被触发并工作,然而RaiseCallbackEvent永远不会被触发。什么好主意吗?

ICallbackEventHandler, RaiseCallbackEvent not firing

显然,任何类型的验证错误都会导致这种情况,尽管页面永远不会告诉您。在我的例子中,页面上有两个具有相同id的数据。我必须调试javascript并读取xmlRequest以查看错误。

很抱歉回复晚了,但可能会帮助到其他人。

ValidationRequest="false"在.aspx页面可以解决这个未知的问题。