如何访问自定义模型字段属性中的其他模型字段?

时间:2012-06-05 07:11:39

标签: asp.net-mvc-3 model custom-attributes system.reflection .net-reflector

问题在于我试图在asp.net mvc3中创建自定义模型字段属性,以及需要访问其他模型字段的内容。以例如#34; 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字段以供进一步使用。我在考虑使用反射,但不知道如何在那里获得模型对象。非常感谢任何帮助人员。

1 个答案:

答案 0 :(得分:0)

你不能 - 因为没有模型对象。

您的属性在元数据中是“序列化”的 - 即构建它所需的字段是序列化的,因此它们必须是编译时间已知的文字。当您使用GetCustomAttributes之类的方法在模型类上使用反射时,将调用构造函数。但是那时你(在你的代码中)可能会有一些对象需要处理。