0

我的情况是这样的线程:
ASP.NET 自定义验证器 + 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。
有什么问题,我该如何解决?

提前致谢

4

1 回答 1

4

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

我会调查的一些领域:

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

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

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

于 2012-06-28T23:40:15.763 回答