3

我有这段代码,在不同的情况下,使用来自MVC Foolproof ValidationRequiredIf的属性

[Display(Name = "ID Number")]
[RequiredIf("CitizenshipId", 1)]
public string IdNumber { get; set; }

但我真正想要的是

[RequiredIf("CitizenshipId", GetId("SA Citizen")]

现在,我认为其他开发人员也希望消除幻数 1 到目前为止,我所想到的只是函数必须查找的查找函数参数的字符串名称。把 1 变成“1”是很糟糕的。

注意:这里的常量并不理想,因为上面的幻数指的是数据库的 PK。我想这也不理想,我应该为每个查找条目添加一个带有“常量代码”的第三列,所以无论 PK 是什么,无论文本是什么,我们仍然有一个不可变的值。

注意:我在 Orchard 内部工作,所以与定制提供商没有什么有趣的业务。

4

2 回答 2

3

我使用了 FluentValidator,它比 Attributes 更灵活。肯定更容易测试。

于 2013-01-07T10:01:22.660 回答
2

你最好的选择是使用常量。

  1. 无法更改现有属性。
  2. 对于属性,不支持泛型。
  3. 不能使用 Lambda 表达式,因为属性构造函数(和属性)只能包含常量表达式
于 2013-01-07T09:43:15.377 回答