2012-06-28 80 views
0

我的情況是這樣的主題:
ASP.NET Custom Validator + WebMethod + jQuery
我的aspx代碼:ASP.NET自定義驗證+的WebMethod +的jQuery + .NET 4.0 +不起作用

<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.
問題是什麼,我該如何解決它?

在此先感謝

+0

'警報'是否起火?你是否包含除jQuery之外的任何其他JavaScript庫?你有沒有在螢火蟲這樣的工具中看過這篇文章的迴應? –

+0

我沒有看到警報('a');在所有。在螢火蟲上工作! – MoonLight

+0

對不起,我在提醒時指的是alert('asd')'。只是確認你的js函數實際上被調用了。 –

回答

4

從代碼你已經表明,它應該工作,但也有可能,可能是導致你的問題,你的代碼的其他一些領域。

有些地方我會調查:

  • 您使用驗證組,爲您的文本框和自定義驗證。觸發回發的控件是否也包含ValidationGroup =「A」屬性?
  • 當您調用Web方法時,您將傳入'{"Value":"' + args.Value + '"}',作爲您的數據到方法調用。我認爲您需要將"Value"更改爲"pass"以匹配Web方法參數名稱。
  • 我沒有用Telerik控件工​​作太多。也許RadScriptManager以某種方式攔截事件?

我建議創建一個只使用最少代碼來證明你是否試圖做的工作的頁面版本:簡單頁面,帶有文本框控件,自定義驗證器,後面的代碼中的jQuery代碼和web方法。

希望這會幫助你發現任何問題。

+0

真的很感謝你的關注。解決 - >「價值」到「通過」。所以關於RadScriptManager沒有問題。也觸發回發的控件具有ValidationGroup =「A」。 – MoonLight