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

时间:2008-12-18 20:56:27

标签: asp.net jquery forms plugins

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

谢谢, 戴夫

7 个答案:

答案 0 :(得分:4)

ms ajax?如果我使用更新面板,我不需要jquery。我想只使用jquery和表单插件(加上验证插件)。没有微软ajax对我来说,谢谢! 只要看看他们在萤火虫中产生的交通就可以了解原因。

答案 1 :(得分:3)

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

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

sName = txtName.text

txtName的文本将为空。但是如果你使用你的请求对象,你应该能够在知道控件的UniqueID

的情况下提取值

sName = Request.Form(txtName.UniqueID)

那么我要做的是使用表单插件的成功:回调来运行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 here

调用ms ajax的更多信息

答案 2 :(得分:1)

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

当你提交一个asp.net表单进行回发时,它会在页面生命周期中发回所有内容,我认为没有任何关于jQuery ajax请求与之交谈的内容。你可以在页面上设置一个WebMethod,这实际上是公开一个服务,你可以得到jQuery请求与之交谈,但我不相信它会起作用。

但是,您可以在不使用UpdatePanels see this article的情况下使用MS库执行ASP.NET AJAX,以便更好地了解使用WebMethods和ajax javascript库可以做什么

答案 3 :(得分:1)

我目前使用asp.net和jquery的混合方式以及我解决页面生命周期问题的方式,这样就是不使用autopostbacks和asp.net按钮来提交表单。

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

这些文章对我有用:

答案 4 :(得分:1)

我今天遇到了这个问题,并最终使用以下黑客组合解决了这个问题:

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

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

  2. ASP.NET webform页面在页面上有一个表单,其id和aspnetForm,但操作总是设置为发布到自身,所以加载Search.aspx时需要做的第一件事页面是将aspnetForm的动作更改为Results.aspx,如下所示:

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

  3. 然后,您需要处理viewstate,以便在从Search.aspx发送到Results.aspx时,您不会收到无效的viewstate错误。要执行此操作,只需从页面中删除viewstate变量,如下所示:

    $( '#__ VIEWSTATE')除去();

  4. 那么你应该能够设置#aspnetForm来使用jquery表单插件,如下所示:

    $( '#aspnetForm')给ajaxForm();

  5. 然后,您可以发布到Results.aspx webform。这只是让你朝着正确的方向前进的开始,但基本上它归结为需要更改aspnet表单发布到的行为然后删除viewstate。

答案 5 :(得分:0)

似乎VS08不适合您,但其他人可能会感兴趣: 前几天我去了MSDN路演,似乎很容易。 Scott Gu的博客有: http://weblogs.asp.net/scottgu/archive/2008/11/21/jquery-intellisense-in-vs-2008.aspx

答案 6 :(得分:0)

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

好的答案(但很难实现) - 扔掉WebForm并使用MVC。

妥协的解决方法 - 我自己做了一个小插件,将div转换为ajax提交,div使用method =“post”和action =“url”打扮,然后利用jQuery Form Plugin进行序列化,提交一个插件模式。虽然它不进行文件上传(因为这需要IFrame,我认为它仍然可行,但需要更多的黑客攻击)。代码在我的客户端项目中,所以我仍然没有权限将其作为插件发布。但是,一旦你了解了理论,我认为这并不难做到。)

真的,下次瞄准好答案(摆脱WebForm)。它不仅仅是jQuery Form会伤害你,如果你决定做jQuery + Web Form,你必须承担更多的痛苦,如果它不是我客户的要求我永远不会走这条道路。