0

문제는 다른 모델 필드에 액세스해야하는 asp.net mvc3에서 사용자 지정 Model 필드 특성을 만들려고합니다. 예를 들어 "PersonId"로 명명되었습니다. 사용자 정의 모델 필드 속성에서 다른 모델 필드에 액세스하는 방법?

그래서 나는이

public class PersonWoundModel : IAppointmentModel 
    { 

     public int PersonId { get; set; } 

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

같은 모델을 가지고 있고 사용자 정의 그래서 basicaly 내가 더 사용을 위해 [CustomAttribute]에서 aPersonId 필드를 얻을 필요가

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

속성했다. 리플렉션 사용에 대해 생각하고 있었지만 모델 객체를 얻는 방법을 모릅니다. 어떤 도움을 주셔서 감사합니다.

답변

0

모델 개체가 없기 때문에 사용자가 할 수 없습니다.

메타 데이터에서 속성이 'serialize'됩니다. 즉, 속성을 구성하는 데 필요한 필드가 직렬화되어 있으므로 알려진 리터럴을 컴파일해야합니다. GetCustomAttributes과 같은 메서드를 사용하여 모델 클래스에서 리플렉션을 사용하면 생성자가 호출됩니다. 그러나 그 시점에서 당신은 (당신의 코드에서) 처리 할 객체가있을 것입니다.

+0

어떻게 든 모델 객체를 얻을 수 있습니까? – Mindaugas

+0

내가 말했듯이 - 아니, 거기에? :) 생성자에서? - 내가 말했듯이 모델의 유형에 대한 리플렉션을 사용할 때 호출됩니다. * 모든 * 객체가 심하게 필요한 경우 - 'new'를 사용하여 객체를 구성하십시오. – Bond

+0

그 속성은 어떤 모델에서나 사용할 수 있습니다. 나는 어떤 객체도 필요 없다 :) PersonId가 필요한 곳이 필요하다. :). 제 말은 모델 객체를 속성 클래스의 아무 곳에 나 가져갈 수 있다는 것입니다. – Mindaugas

관련 문제