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. 
     } 
} 

так basicaly мне нужно получить aPersonId поле в [CustomAttribute] для дальнейшего использования. Я думал об использовании отражения, но понятия не имею, как получить там объект модели. спасибо за любую помощь ребятам.

ответ

0

Вы не можете - потому что нет объекта модели.

Ваш атрибут «сериализован» в метаданных - то есть поля, необходимые для его построения, сериализуются так, что они должны компилировать известные литералы. Конструктор будет вызываться, когда вы используете отражение в классе модели с помощью метода, например GetCustomAttributes. Но в этот момент у вас (в вашем коде), вероятно, будет некоторый объект для решения.

+0

можно ли как-нибудь получить объект модели? – Mindaugas

+0

как я уже сказал - нет, а есть где? :) в конструкторе? - как я сказал, он будет вызываться, когда вы будете использовать отражение над типом вашей модели. Если вам очень нужен * любой * объект, просто создайте один, используя «новый» – Bond

+0

, этот атрибут можно использовать в любой точке любой модели. Мне не нужен какой-либо объект :) Мне нужен тот, где PersonId есть :). я имею в виду, можно ли получить объект модели в любом месте класса атрибутов :) – Mindaugas

Смежные вопросы