【问题标题】:ASP.NET web forms- how to avoid duplication between client and server side validationsASP.NET Web 表单 - 如何避免客户端和服务器端验证之间的重复
【发布时间】:2018-08-20 16:29:39
【问题描述】:

我在stackoverflow上发了很多帖子并在线搜索,但仍然没有找到适合我的解决方案。

我有 2 个应用程序 - 第一个使用 Web 表单,另一个使用 MVC。 我知道 MVC 支持模型字段上的数据注释,因此它使我无需在客户端维护验证。

我需要类似的东西,也可以在 Web 表单中工作,我想创建数据注释(或任何其他可以工作的东西),这将服务于我的两个应用程序,而不必在服务器端和客户端维护重复的验证。

这样的事情有可能吗?

【问题讨论】:

    标签: asp.net asp.net-mvc validation webforms


    【解决方案1】:

    无需在服务器端和客户端维护重复验证。

    相反,您将需要重复验证:客户端和服务器端验证。

    • 为了用户体验,您需要客户端验证:这样用户就可以立即获得无效输入的反馈,而无需发布表单(并等待响应)和页面刷新的不和谐体验。
    • 您需要服务器端验证,因为您永远不应该信任客户端

    好消息是,如果您正确使用 ASP.NET 的内置验证功能,那么您无需花费大量精力即可同时进行服务器端和客户端数据验证。

    在 ASP.NET WebForms 中,这是通过像 <asp:RequiredFieldValidator> 这样的“验证控件”完成的 - 它提供服务器端和客户端验证。通过设置EnableClientScript="True" 启用客户端验证,它将自动将必要的Javascript 注入您的页面。许多 Web 开发人员(包括我自己)不喜欢 ASP.NET WebForms 的这个“功能”,因为这必然意味着您失去对呈现页面的控制。

    在 ASP.NET MVC 中也有自动的服务器+客户端验证,但它涉及更多:您需要添加自己对 jQuery 的验证库的引用并在 web.config 中启用它。详情见这篇文章:https://www.blinkingcaret.com/2016/03/23/manually-use-mvc-client-side-validation/

    (顺便说一句,请注意输入数据验证和输入数据验证之间的区别:验证是检查输入数据是否符合必需/可选检查,是否匹配某些格式(例如日期、货币)和其他“静态”规则,并且不例如,需要数据库查找 - 而 verification 涉及将输入数据与已知数据进行比较,以验证和执行授权规则、存在检查等 - 执行起来成本更高,例如使用数据库或第三方网络服务)。

    【讨论】:

      【解决方案2】:

      嗯.net web forms之前有验证工具,可以在工具箱下找到 根据使用数据注释不是 100% 你可以使用它我要做的就是将所需的引用添加到项目中并尝试使用它。请注意,dataannotation 通过名称而不是输入的 id 绑定输入,因此尝试将相同的名称也输入到客户端输入

      另一种方法是数据注释使用 jquery 验证器插件,您可以在 Web 表单中手动使用它

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-09-26
        • 1970-01-01
        • 1970-01-01
        • 2011-10-17
        • 2023-04-08
        • 2013-04-16
        • 2012-02-05
        • 1970-01-01
        相关资源
        最近更新 更多