私は実行中のアクションから反映された情報を取得する必要があるModelValidatorを実装しています。検証動作は、アクションの装飾方法によって変わります。その情報を入手できますか?ModelValidatorからアクション情報を取得
-1
A
答えて
1
ModelValidatorのコンストラクタは、ControllerContextをとる必要があります。あなたのコントローラが飾られているものの属性を決定するために、そのオブジェクトを使用することができますので、のように:
context.Controller.GetType().GetCustomAttributes(typeof(YourAttribute), true).Length > 0
編集:だから
attributes = context.Controller.GetType().GetCustomAttributes(true);
:あなたはまた、そうのようなすべての属性のリストを取得することができます
特定の属性に基づいて検証するための簡単な例:
public class SampleValidator : ModelValidator {
private ControllerContext _context { get; set; }
public SampleValidator(ModelMetadata metadata, ControllerContext context,
string compareProperty, string errorMessage) : base(metadata, context) {
_controllerContext = context;
}
public override IEnumerable<ModelValidationResult> Validate(object container) {
if (_context.Controller.GetType().GetCustomAttributes(typeof(YourAttribute), true).Length > 0) {
// do some custom validation
}
if (_context.Controller.GetType().GetCustomAttributes(typeof(AnotherAttribute), true).Length > 0) {
// do something else
}
}
}
0
逆コンパイルSystem.Web.Mvc後、私はそれを得た:
protected override IEnumerable<ModelValidator> GetValidators(ModelMetadata metadata, ControllerContext context, IEnumerable<Attribute> attributes)
{
ReflectedControllerDescriptor controllerDescriptor = new ReflectedControllerDescriptor(context.Controller.GetType());
ReflectedActionDescriptor actionDescriptor = (ReflectedActionDescriptor) controllerDescriptor.FindAction(context, context.RouteData.GetRequiredString("action"));
object[] actionAttributes = actionDescriptor.GetCustomAttributes(typeof(MyAttribute), true);
}
+0
Eduardo:モデレータレスポンスに関して、あなたの答えにあなたのブログエントリ全体を入れる必要はありません。ブログエントリの重要な情報を要約し、リンクを提供するだけです。裸のリンク(要約なし)の回答にはいくつかの問題があります。スパムのように見え、リンク腐敗に苦しんでいます。 –
関連する問題
- 1. データベースから情報を取得する
- 2. AlertDialogから情報を取得
- 3. AndroidでFacebookから情報を取得
- 4. データグリッドから情報を取得する
- 5. アンドロイドジオコーダからペルシア語情報を取得
- 6. バッテリーの情報をアンドロイドデバイスから取得
- 7. Schema.orgからJSON-LD情報を取得
- 8. クレームIDからグループ情報を取得
- 9. form_validのフォームデータから情報を取得
- 10. swiftでWebserverから情報を取得
- 11. Jenkins APIからビルド情報を取得
- 12. pymodbusからデバイス情報を取得
- 13. ObjCPropertyDeclからクラス情報を取得
- 14. ストリーミングラジオからの情報を取得
- 15. juliaからシステムメモリ情報を取得
- 16. マウスから情報を取得
- 17. FLVからキーフレーム情報を取得
- 18. データベースサーバからハードウェア情報を取得
- 19. OLAPから情報を取得
- 20. restfbからの情報を取得
- 21. アンドロイドのステータスバーから情報を取得
- 22. リストから情報を取得する
- 23. 列から情報を取得
- 24. 星のレビューシステムから情報を取得
- 25. パッケージ名からアプリケーション情報を取得
- 26. default.ctp controller cakephpから情報を取得
- 27. URLから情報を取得する
- 28. ファイルパスからビデオ情報を取得
- 29. JavaScriptオブジェクトから情報を取得
- 30. 取得情報
私たちは、ほとんどがあります。私は、実行アクションが装飾されている属性を取得する必要があります。 – Eduardo
編集された回答を参照してください。 – gram
これはコントローラのすべての属性を返します。どちらの方法? – Eduardo