我正在使用jQuery AJAX提交表单并进行客户端验证。 当通用处理程序(.ashx)而不是Web表单(.aspx)处理AJAX请求时,是否可能(以及如何)使用ASP.NET 4.5验证控件?
以下是一些让我的问题更清晰的代码。我希望能够做到这样的事情:
HTML
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Test.aspx.cs"
Inherits="Test" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script src="Scripts/jquery-2.1.3.min.js"></script>
</head>
<body>
<form id="form1" runat="server">
<input type="text" id="Name1" />
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="RequiredFieldValidator"></asp:RequiredFieldValidator>
<asp:CustomValidator ID="CustomValidator1" runat="server" ClientValidationFunction="validateName1" ControlToValidate="Name1" OnServerValidate="Name1_ServerValidate">*</asp:CustomValidator>
<br />
<input type="file" multiple="multiple" style="width: 195px;" />
<br />
<input type="button" id="btnSendEmail" value="Send" />
</form>
</body>
</html>
的JavaScript
$.ajax({
url: "TestAjaxHandler.ashx",
type: "POST",
...
})
TestAjaxHandler.ashx
public class TestAjaxHandler : IHttpHandler {
public void ProcessRequest (HttpContext context) {
}
protected void Name1_ServerValidate(object source, ServerValidateEventArgs args {
// Here goes validation logic
}
public bool IsReusable {
get {
return false;
}
}
}
答案 0 :(得分:0)
你“不能”使用CustomValidator执行此操作,因为它的ClientValidationFunction不支持AJAX。 jQuery支持创建同步请求(https://api.jquery.com/jQuery.ajax/#jQuery-ajax-settings async),但在大多数情况下,您不希望这样做。
我认为最好的选择是编写自己的验证控件或使用带有验证属性的jQuery验证插件进行服务器验证。