0

問題は、他のモデル フィールドにアクセスする必要がある asp.net mvc3 でカスタム モデル フィールド属性を作成しようとしていることです。たとえば、「PersonId」という名前です。

だから私はこのようなモデルを持っています

public class PersonWoundModel : IAppointmentModel
    {

        public int PersonId { get; set; }

        [CustomAttribute("PersonId")]
        public FillInList Positions { get; set; }
}

そして私はカスタム属性を持っています

[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = false)]
    public class CustomAttribute : Attribute, IMetadataAware
    {
        public int PersonId { get; private set; }


        public CustomAttribute(bool allowDelete, bool allowEdit, string htmlHelpers)
        {
           //i need to get a PersonId here somehow.. reflection or any other method.
        }
}

したがって、基本的には、さらに使用するために [CustomAttribute] で aPersonId フィールドを取得する必要があります。リフレクションの使用を考えていましたが、そこにモデル オブジェクトを取得する方法がわかりません。助けてくれてありがとう。

4

1 に答える 1

0

モデルオブジェクトがないため、できません。

属性はメタデータで「シリアル化」されます。つまり、それを構築するために必要なフィールドはシリアル化されるため、コンパイル時に既知のリテラルである必要があります。GetCustomAttributesなどのメソッドを使用してモデル クラスでリフレクションを使用すると、コンストラクターが呼び出されます。しかし、その時点で、(コード内に) 処理するオブジェクトがおそらくあるでしょう。

于 2012-06-05T07:18:17.873 に答える