Я пытаюсь реализовать Нестандартный элемент верификации.NET, который использует $ .ajax, чтобы запросить WebMethod на той же странице и возвратить булево значение, чтобы указать, является ли результатом TRUE или FALSE.
WebMethod, который я использую, действительно прост
[WebMethod()]
public static bool IsPromoValid(string code)
{
string promoCode = "ABCDEFG";
bool result = code.ToLower() == promoCode.ToLower();
return result;
}
CustomValidator похож на это
<asp:CustomValidator ID="cvPromoCode" Display="None" ControlToValidate="txtPromoCode" runat="server" ClientValidationFunction="validatePromo"
ErrorMessage="The promo code you entered is incorrect" OnServerValidate="ValidatePromoCode" />
И простой $ .ajax () функция ClientValidation
function validatePromo(src, args) {
$.ajax({
type: "POST",
url: "Register.aspx/IsPromoValid",
data: "{'code': '" + args.Value + "'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
args.IsValid = msg.d;
}
});
}
Проблема состоит в том, что страница проверяет немедленно и на самом деле не ожидает вызова ajax к концу. Если существуют какие-либо другие ошибки на странице, она показывает Сводку Проверки с ними, но никогда не показывает сообщение об ошибке от Нестандартного элемента верификации.
Я вижу, что вызов Ajax сделан в Firebug и этом returs правильный ответ (в этом TRUE или FALSE случая)