问题在于我试图在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字段以供进一步使用。我在考虑使用反射,但不知道如何在那里获得模型对象。非常感谢任何帮助人员。
答案 0 :(得分:0)
你不能 - 因为没有模型对象。
您的属性在元数据中是“序列化”的 - 即构建它所需的字段是序列化的,因此它们必须是编译时间已知的文字。当您使用GetCustomAttributes之类的方法在模型类上使用反射时,将调用构造函数。但是那时你(在你的代码中)可能会有一些对象需要处理。