【问题标题】:How to validate a property without using attributes in MVC如何在不使用 MVC 中的属性的情况下验证属性
【发布时间】:2014-12-04 19:21:31
【问题描述】:

我的应用程序的许多部分都在使用一个实体。我需要为其属性之一添加验证。问题是我不需要在我的应用程序的每个部分都验证这个属性。

我考虑过使用自定义属性,但是我不确定如何绕过验证(因为它不依赖于其他属性,它实际上取决于我正在使用它的应用程序的一部分)。

我考虑过使用接口并有两种实现方式——一种带有这个属性,一种没有。但是我的应用程序中存在太多的耦合,这可能是太多的工作。

最终,我可以创建一个静态类来验证它。但我想知道是否会有更多 MVCish 选项?谢谢!

【问题讨论】:

  • 派生类型可以隐藏属性(new)并添加属性。
  • MVC 与验证无关。 MS MVC 框架支持归因验证,使开发人员更容易。在您的情况下,只是一个验证器类应该是一个简单的选项,并且您似乎已经在这样做了。
  • 我认为“简单”的方法可以在这里找到stackoverflow.com/a/10896355/1370442
  • 要么使用视图模型,因此您可以拥有一个具有在您的视图中使用的验证的类,然后您的实体没有上述验证,可以在不需要验证时使用,或者遵循@asawyer's建议。

标签: c# asp.net-mvc


【解决方案1】:

Specification Pattern 是解决这个问题的好选择。您可以创建一个规范类来验证您的属性,并使用此规范来验证您想要真正执行验证的属性。

下面是这个模式的一些 C# 库:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-01
    • 1970-01-01
    • 2023-03-25
    • 2016-06-24
    • 2012-09-28
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    相关资源
    最近更新 更多