複数のブランドにまたがって再利用されるWebアプリケーションを構築するというクライアントのリクエストがあります。データ構造は同じままですが、特定のユースケースでは、あるフィールドが他のフィールドでない可能性がある場所で必要とされることがあります。入力(ASP.NET MVC)に基づいた異なる検証ロジックの使用
例えば、我々は、基本的なPIIをキャプチャするフォームを持っているとしましょう、とビューモデルは次のようになります。例えば、ルートデータパラメータに基づいて
public class UserViewModel
{
public string FirstName {get;set;}
public string LastName {get;set;}
public string Email {get;set;}
public string Gender {get;set;}
}
、検証ルールが異なる場合があります。だから私は本当に検証属性としてルールをハードコードしたくありません。私は
public ActionResult DoSomething(UserViewModel model)
{
var offer = RouteData.Values["offer"];
var validator = validators.ContainsKey(offer)
? validators[offer] : dict["default"];
validator.Validate(model, ModelState);
if (ModelState.IsValid)
{
// etc...
}
}
この条件の検証にクリーンなアプローチがあります...辞書に正しいバリデータを別のバリデータ・インタフェースを使用して検索すると思いましたか?
編集:私はサードパーティのライブラリ推奨の人々を探していません。私は検証を可能な限り柔軟に構成するためのアドバイスを探しています。
ルックすなわち –
具体的には、属性ベースの検証を使用したくないと述べました。特定のシナリオで検証要件が変更された場合、モデルに触れたくないからです。 – Chris