3

MVC Foolproof ValidationRequiredIfの属性を使用して、さまざまなインスタンスでこのコードを使用しています

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

しかし、私が本当に欲しいのは

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

さて、他の開発者も何千人も望んでいると思うので、マジックナンバー1を排除することです。これまでのところ、私が考えるのは、関数がルックアップする必要のあるルックアップ関数パラメーターの文字列名だけです。そして、1を「1」にするのは明らかに悪いことです。

注:上記のマジックナンバーはDBのPKを参照しているため、定数はここでは理想的ではありません。これも理想的ではないと思います。ルックアップエントリごとに「定数コード」を含む3番目の列を追加する必要があるため、PKやテキストに関係なく、不変の値が1つあります。

注意:私はオーチャード内で働いているので、カスタムプロバイダーとの面白いビジネスはありません。

4

2 に答える 2

3

属性よりも柔軟なFluentValidatorを使用しました。間違いなくテストが簡単です。

于 2013-01-07T10:01:22.660 に答える
2

最善の策は、定数を使用することです。

  1. 既存の属性は変更できません。
  2. 属性の場合、ジェネリックはサポートされていません。
  3. 属性コンストラクター(およびプロパティ)には定数式のみを含めることができるため、ラムダ式は使用できません
于 2013-01-07T09:43:15.377 に答える