私はasp.net mvc4で作業しており、ユーザーからのデータを受け入れるフォームを持っています。名前、住所などの入力フィールド。
通常の mvc 検証属性を使用して検証できるようにしたいのですが、特定のパラメーターに基づいてサイトが異なるため、ユーザー (文化など) に基づいて実行時に読み込まれる構成ファイルに各属性の正規表現を保持します。 . 依存性注入に spring.net を使用しています。
実行時にカスタム属性への依存性注入を実行することは可能ですか。
私はasp.net mvc4で作業しており、ユーザーからのデータを受け入れるフォームを持っています。名前、住所などの入力フィールド。
通常の mvc 検証属性を使用して検証できるようにしたいのですが、特定のパラメーターに基づいてサイトが異なるため、ユーザー (文化など) に基づいて実行時に読み込まれる構成ファイルに各属性の正規表現を保持します。 . 依存性注入に spring.net を使用しています。
実行時にカスタム属性への依存性注入を実行することは可能ですか。
属性メソッドの値は、定数値に制限されています。例: 文字列、数値、およびtypeof
.
あなたができることはRegularExpressionAttribute
、コンストラクターで正規表現を見つけるためのキーを取る新しい属性を派生させることです。
[MyRegularExpression("Field1")]
public string Field1 { get; set; }
属性:
[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter, AllowMultiple = false)]
public class MyRegularExpressionAttribute : RegularExpressionAttribute
{
public MyRegularExpressionAttribute(string key)
: base(FindRegex(key))
{ }
private static string FindRegex(string key)
{
...
}
}
から拡張してカスタム アトリビュートを作成ValidationAttribute
し、データ ストアの依存関係をコンストラクタに渡すことができます。この属性をモデルのプロパティに適用し、同じものを DI コンテナーに登録します。
はい、実行時に依存関係を注入することもできます。Castle Windsor DI では、「Transient」などの依存関係に LifeStyles を指定できます。spring.net にはそのようなものがあるはずです。