Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在asp.net中使用jquery表单插件?_Asp.net_Jquery_Forms_Plugins - Fatal编程技术网

如何在asp.net中使用jquery表单插件?

如何在asp.net中使用jquery表单插件?,asp.net,jquery,forms,plugins,Asp.net,Jquery,Forms,Plugins,在asp.NET2.0(不是mvc)中,表单的操作是对自身的。如何使用表单插件向服务器发送信息? 我需要从表单发送数据(比如姓名、电子邮件、评论),并在客户端显示结果。 有什么想法吗 谢谢, 戴夫·阿贾克斯小姐?如果我使用更新面板,我不需要jquery。我只想使用jquery和表单插件(加上验证插件)。我不需要microsoft ajax,谢谢! 只要看看他们在firebug中产生的流量就知道了原因。VS08似乎不适合您,但其他人可能会感兴趣: 前几天我去看了一场MSDN路演,看起来很容易。 S

在asp.NET2.0(不是mvc)中,表单的操作是对自身的。如何使用表单插件向服务器发送信息? 我需要从表单发送数据(比如姓名、电子邮件、评论),并在客户端显示结果。 有什么想法吗

谢谢,
戴夫·阿贾克斯小姐?如果我使用更新面板,我不需要jquery。我只想使用jquery和表单插件(加上验证插件)。我不需要microsoft ajax,谢谢!
只要看看他们在firebug中产生的流量就知道了原因。

VS08似乎不适合您,但其他人可能会感兴趣: 前几天我去看了一场MSDN路演,看起来很容易。 Scott Gu的博客有以下内容:

由于viewstate与ASP.NET中的表单紧密耦合的方式,除非您设置一个服务来接受请求,否则我不确定这是否可行。如果您不想使用viewstate,那么您可以在aspx页面上使用一个普通的HTML表单,并将其提交给一个返回预期结果的服务

当您提交一个asp.net表单进行回发时,它会在页面生命周期中发送所有内容,我认为jQueryAjax请求实际上没有什么可谈的。您可以在页面上设置一个,它本质上公开了一个服务,您可以获得jQuery请求来与之对话,但我不相信它会起作用


但是,您可以使用MS库执行ASP.NET AJAX,而无需使用UpdatePanel,关于WebMethods和ajax javascript库可以做什么的详细说明,我目前使用asp.net和jquery的混合,以及我解决页面生命周期问题的方法,即不使用autopostbacks和asp.net按钮来提交表单

我使用附加到简单html按钮的ajax调用,或者,当我真的想提交整个页面时,我使用uu doPostBack(eventTarget,eventArgument)javascript函数

这些文章对我很有用:


这取决于您希望在表单提交期间使用多少asp.net。我以同样的方式使用forms插件,但您需要从更经典的web模型的角度来考虑

表单插件执行“提交”,其中不包含任何viewstate信息。也就是说,如果你试图得到这样一个值

sName=txtName.text

txtName的文本将为空。但是如果使用请求对象,只要知道控件的唯一ID,就应该能够撤回该值

sName=Request.Form(txtName.UniqueID)

然后我要做的是使用表单插件的success:callback来运行一个ajax调用,该调用将收回您的结果。您可以使用ms ajax WebMethods实现这一点,并且可以直接从jquery调用WebMethods,而无需使用ms脚本管理器。在本例中,WebMethod返回我希望在页面上显示的html

$(form).ajaxSubmit(function(){
   success:function(ret){
     $.ajax({
       type: "POST",
       contentType: "application/json; charset=utf-8",
       dataType: "json",
       data: "{}",
       url: "SomePage.aspx/SomeWebMethod",
       success: function(msg){
         $('#somediv').html(msg); 
       }
   }
});

有关使用jquery调用ms ajax的更多信息它不起作用,因为ASP.NET强制您在使用服务器控件时将所有内容都放在服务器窗体中(这是它处理回发的方式)。您会遇到的主要问题是HTML无论如何都不允许嵌套表单,因此您甚至不能使用jQuery来查找表单元素(这是我使用FF3的经验)

很好的答案(但很难实现)——扔掉WebForm,使用MVC

折衷的解决方法——我自己做了一个小插件,它将一个div转换成一个ajax提交,并使用method=“post”和action=“url”修饰div,然后使用jQuery表单插件序列化,并使用插件模式提交。但它不进行文件上传(因为这需要IFrame,我认为它仍然可行,但需要更多的技巧)。代码在我客户的项目中,所以我仍然没有权限将其作为插件发布。不过,我认为,一旦你了解了这个理论,就不难做到这一点:)


真的,下次一定要找到好答案(摆脱WebForm)。不仅仅是jQuery表单会伤害到你,如果你决定使用jQuery+Web表单,你还需要承受更多的痛苦,如果这不是我客户的要求,我将永远不会走这条路。

我今天遇到了这个问题,并最终通过以下几种方法解决了这个问题:

假设您有一个搜索页面和一个结果页面,并且在搜索页面上有一个表单,您希望使用jqueryforms插件通过ajax发布到结果页面并加载该表单。您需要执行以下操作:

  • 创建Search.aspx页面和Results.aspx页面

  • ASP.NET webform页面在id为aspnetForm的页面上有一个表单,但该操作将始终设置为post到自身,因此加载Search.aspx页面时需要做的第一件事是将aspnetForm的操作更改为Results.aspx,如下所示:

    $('#aspnetForm').attr('action','Results.aspx')

  • 然后需要处理viewstate,以便在从Search.aspx发布到Results.aspx时不会出现无效的viewstate错误。为此,只需从页面中删除viewstate变量,如下所示:

    $('#uu VIEWSTATE')。删除()

  • 然后您应该能够设置#aspnetForm以使用jquery表单插件,如下所示:

    $('#aspnetForm').ajaxForm()

  • 这样,您就可以发布到Results.aspx网络表单。这只是让您朝着正确方向前进的一个开始,但基本上归结为需要更改aspnet表单发布到的操作,然后删除viewstate