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 回答