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" 属性も含まれていますか?
  • '{"Value":"' + args.Value + '"}',Web メソッドを呼び出すときは、データとしてメソッド呼び出しに渡します。Web メソッドのパラメーター名と一致するように変更"Value"する必要があると思います。"pass"
  • 私は Telerik コントロールをあまり扱っていません。RadScriptManager何らかの方法でイベントを傍受している可能性がありますか?

実行しようとしていることが機能するかどうかを証明するために、最小限のコードのみを使用するバージョンのページを作成することをお勧めします。単純なページ、テキスト ボックス コントロール、カスタム バリデータ、jQuery コード、およびコード ビハインドの Web メソッド。

問題の発見に役立つことを願っています。

于 2012-06-28T23:40:15.763 に答える