【问题标题】:How to use ASP.NET validation controls in generic handlers (.ashx)?如何在通用处理程序 (.ashx) 中使用 ASP.NET 验证控件?
【发布时间】:2015-04-20 07:52:29
【问题描述】:

我正在使用 jQuery AJAX 提交表单并进行客户端验证。 当 AJAX 请求由通用处理程序 (.ashx) 而不是 Web 表单 (.aspx) 处理时,是否可以(以及如何)使用 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;
    }
}

}

【问题讨论】:

  • 给我们一些代码/示例也许是件好事。
  • 我认为我对正常的回发很紧张,我认为在使用 jquery ajax 时你不能这样做。

标签: asp.net ajax validation ashx


【解决方案1】:

您“不能”使用 CustomValidator 执行此操作,因为它的 ClientValidationFunction 不支持 AJAX。 jQuery 支持创建同步请求(https://api.jquery.com/jQuery.ajax/#jQuery-ajax-settings async),但在大多数情况下您不想这样做。

我认为最适合您的选择是编写自己的验证控件或使用带有验证属性的 jQuery 验证插件进行服务器验证。

【讨论】:

    猜你喜欢
    • 2018-04-16
    • 2010-10-12
    • 1970-01-01
    • 2011-03-01
    • 1970-01-01
    • 2012-10-09
    • 2011-10-14
    • 2014-01-22
    • 2011-04-11
    相关资源
    最近更新 更多