【问题标题】:ASP.NET validation using AJAX without update panels使用没有更新面板的 AJAX 进行 ASP.NET 验证
【发布时间】:2010-12-15 00:28:58
【问题描述】:

我正在寻找一种方法来使用自定义 ASP.NET 验证器来验证输入,而不使用 UpdatePanels,也不需要完整的回发。

验证器做了几件事情——不仅仅是长度/正则表达式,还有其他一些非标准的东西。

我们的用户需要Javascript,所以我不必担心关闭了javascript的普通用户。

我看到了几个选项,但没有一个是理想的:

1) 接受并使用 UpdatePanels。我属于“UpdatePanels are evil”组,所以我不想这样做。

2) 在不使用验证控件的情况下,通过 jQuery 或任何其他 AJAX 框架将值传递给 PageMethod 静态方法来手动验证字段。每次我需要使用验证器时,这都需要客户端和服务器编码。

3) 使用 jQuery(或任何其他 javascript 框架)验证进行客户端验证,然后如果他们以某种方式通过该验证,则使用服务器代码验证控件进行完整回发。这将要求所有验证规则都用 javascript 和 C# 编写。在这一点上,我不关心完全失败的回发,因为 javascript 验证会抓住真正的用户,他们并没有试图把我搞砸。

是否有替代方法可以使用真正的 CustomValidator 控件,部分回发,仅 C# 代码,在没有 UpdatePanel 和大量冗余 javascript 的情况下验证输入?

谢谢

【问题讨论】:

    标签: javascript asp.net validation


    【解决方案1】:

    我会混合使用 2 和 3。

    不管怎样,第一服务器端验证都会存在......

    所以我会制作需要简单验证逻辑的字段(数字、文本、字符串长度、字符串某些格式等),没有 ajax 回调,然后在业务规则或其他更复杂验证需要的服务器上使用回调发生,因此复杂的规则只编码一次。

    如果您必须在非常快速的响应(或无延迟...仅 js)或有效数据之间进行选择,我希望有效数据会胜出...因此希望将 2 和 3 一起使用会给出您的响应速度更快,但不会影响有效数据。

    对通用处理程序等的 Ajax 回调应该比 UpdatePanel 快一点,因为传输的数据要少得多...

    【讨论】:

    • 感谢您的提示。我会试一试。关于传输数据的 UpdatePanel 问题,我与您同在 - 这是我不是粉丝的一个重要原因。
    【解决方案2】:

    老实说,我认为 2 是一个不错的选择。无论是否使用 CustomValidator,您都将编写相同的服务器代码来进行验证。您可以在 C# 中完成所有验证代码,只需编写 JS 来调用您的验证方法,可以是 PageMethod 或单独的 ashx。实际上,您可能可以编写一个带有参数的 JS 函数,以便非常轻松地进行 AJAX 调用。

    【讨论】:

      猜你喜欢
      • 2010-10-20
      • 2011-05-23
      • 1970-01-01
      • 1970-01-01
      • 2010-09-12
      • 1970-01-01
      • 2011-05-08
      • 1970-01-01
      相关资源
      最近更新 更多