Jquery 非服务器控件和部分回发

Jquery 非服务器控件和部分回发,jquery,asp.net,dynamic,updatepanel,partial-postback,Jquery,Asp.net,Dynamic,Updatepanel,Partial Postback,我使用jQuery将一些非服务器控件(普通html控件)动态插入到更新面板中 如果我进行完全回发,我可以使用Request.Form获取这些控件的值,但是如果我进行部分回发,我就不能 我应该能够在部分回发期间获取html控件的值吗?或者仅使用runat=“server”的控件 我正在使用非服务器控件,因为我正在玩facebox和文件上载控件。。。这并不漂亮:-更新面板不是执行异步的有效方法 由于您已经在使用jQuery,请向项目中添加一个web服务(.asmx)并点击该按钮。请参见本文图4: 表

我使用jQuery将一些非服务器控件(普通html控件)动态插入到更新面板中

如果我进行完全回发,我可以使用Request.Form获取这些控件的值,但是如果我进行部分回发,我就不能

我应该能够在部分回发期间获取html控件的值吗?或者仅使用runat=“server”的控件


我正在使用非服务器控件,因为我正在玩facebox和文件上载控件。。。这并不漂亮:-

更新面板不是执行异步的有效方法

由于您已经在使用jQuery,请向项目中添加一个web服务(.asmx)并点击该按钮。请参见本文图4:


表单是从viewstate生成的,您的控件不会添加到viewstate。

您可以在部分回发中获得任何表单控件或控件的所有值。这是一个微不足道的答案,但乍一看并不明显。也许这就是ASP.net死亡的原因

请记住

__doPostback(string controlId,string param)
是字符串和ASP.net方法

Request.Params.Get("__EVENTTARGET"); // id
Request.Params.Get("__EVENTTARGET"); // parameter
返回字符串

因此,简单的答案是

  • 用所有表单元素的键值对构造一个javascript对象,这些表单元素是您希望在部分表单中发回的

  • 将该对象字符串化,并将其作为uu doPostBack调用的第二个参数传递

  • 在服务器端,您只需反转此过程即可提取您的对象和您关心的所有表单值

    例如:

    var strigifiedObject = JSON.stringify(myFormObject);
    var id = "partialPostback";
    __doPostBack(id, strigifiedObject);
    
    。。。同时在服务器端

    string id = Request.Params.Get("__EVENTTARGET");
    string param = Request.Params.Get("__EVENTARGUMENT");
    
    if (id == "partialPostback") {
        List<MyObj> formVals = new JavaScriptSerializer().Deserialize<List<MyObj>>>(param);
    }
    
    string id=Request.Params.Get(“\uu EVENTTARGET”);
    string param=Request.Params.Get(“\uu EVENTARGUMENT”);
    如果(id=“partialPostback”){
    List formVals=new JavaScriptSerializer().Deserialize>(参数);
    }
    
    Hmmm,您能解释一下在这种情况下我将如何使用web服务吗?我正在为其他部分使用web服务,但我也在渲染gridview,因此为了简单起见,我将其包装在更新面板中。我认为这并不完全准确。。。表单反映在正常HTTP流中接收的所有变量。Viewstate实际上是通过此函数传递的变量之一,因为它在每次回发过程中都会保持不变。当我在codebehind函数的更新面板中添加控件时,这些值在Request.Form中不存在,因此我认为Viewstate的内容是预定义的…好的,回到绘图板。有没有关于如何使用动态添加的输入文件控件异步保存文件的建议?我不能使用服务器控件,因为该控件将动态添加到jquery facebox(不能很好地使用服务器控件,即重复id)