【问题标题】:ASP.NET Custom Validator + WebMethod + jQuery + .Net 4 + does not workASP.NET 自定义验证器 + WebMethod + jQuery + .Net 4 + 不起作用
【发布时间】:2012-06-28 23:02:41
【问题描述】:

我的情况是这样的:
ASP.NET Custom Validator + WebMethod + jQuery
我的 aspx 代码:

<telerik:RadScriptManager ID="RadScriptManager1" runat="server" EnablePageMethods="True">
<asp:TextBox ID="TextBox" runat="server" Width="170px" ValidationGroup="A" CssClass="txt"
            TextMode="Password"></asp:TextBox>
 <asp:CustomValidator ID="cvPass" runat="server" Display="Dynamic" ControlToValidate="TextBox"
            ValidationGroup="A" ClientValidationFunction="CheckPass">
            invalid
</asp:CustomValidator>

jquery:

    function CheckPass(source, args) {
        alert('asd');
        $.ajax({
            type: "POST",
            async: false,
            timeout: 500,
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            url: "Default.aspx/CheckPassword",
            data: '{"Value":"' + args.Value + '"}',
            success: function (result) {
                alert('a');
                args.IsValid = result.d;
            }
        });
    }

后面的代码(c#):

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Telerik.Web.UI;
using System.Web.Services;
using System.Web.Script.Services;
using System.Data;
using System.Text;
using System.Net.Mail;

namespace Nasim
{
    public partial class Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
        }

        [WebMethod]
        [ScriptMethod]
        public static bool CheckPassword(string pass)
        {
             return false;
        }
    }
}

如您所见,我想在 ajax 模式下使用自定义验证器检查密码(使用 jquery)。
但我不知道为什么 $.ajax 根本不适合我。
没有错误,什么也没有发生,并且总是有回发。
我应该添加除 jquery 之外的特定库吗?
我正在使用 Visual Studio 2010 + .Net 4。
有什么问题,我该如何解决?

提前致谢

【问题讨论】:

  • alert 会起火吗?除了 jquery 之外,您还包括任何其他 javascript 库吗?您是否在 firebug 之类的工具中查看过帖子的回复?
  • 我没有看到 alert('a');一点也不。研究萤火虫!
  • 抱歉,我说警报时指的是alert('asd')。只是在确认您的 js 函数实际上被调用了。
  • alert('asd')没有问题;意思是如果火灾。请看这个帖子 -> stackoverflow.com/questions/8890554/…

标签: c# jquery asp.net ajax customvalidator


【解决方案1】:

从您展示的代码来看,它应该可以工作,但您的代码的其他一些区域可能会导致您的问题。

我会调查的一些领域:

  • 您正在为文本框和自定义验证器使用验证组。触发回发的控件是否也包含 ValidationGroup="A" 属性?
  • 调用 Web 方法时,您将 '{"Value":"' + args.Value + '"}', 作为数据传递给方法调用。我认为您需要将 "Value" 更改为 "pass" 以匹配 Web Method 参数名称。
  • 我对 Telerik 控件的使用并不多。也许RadScriptManager 正在以某种方式拦截事件?

我建议您创建一个仅使用最少代码来证明您尝试执行的操作是否有效的页面版本:一个简单的页面,带有文本框控件、自定义验证器、 jQuery代码和后面代码中的web方法。

希望这能帮助您发现任何问题。

【讨论】:

  • 非常感谢您的关注。已解决->“值”为“通过”。所以 RadScriptManager 没有问题。触发回发的控件也有 ValidationGroup="A"。
猜你喜欢
  • 2011-04-28
  • 2011-04-17
  • 1970-01-01
  • 2012-11-06
  • 1970-01-01
  • 1970-01-01
  • 2016-10-02
  • 1970-01-01
  • 2019-02-12
相关资源
最近更新 更多