0

asp.net mvc4로 작업하고 있으며 사용자의 데이터를 수락하는 양식이 있습니다.mvc 속성에 종속성 삽입

일반적인 mvc 유효성 검사 속성을 사용하여 유효성을 검사 할 수 있지만 사이트가 특정 매개 변수에 따라 달라질 수 있으므로 구성 파일의 각 속성에 대해 정규식을 사용합니다. 런타임시 사용자 (문화 등)에 따라로드됩니다. 나는 dependency injection을 위해 spring.net을 사용하고있다.

런타임에 사용자 지정 특성에 종속성 주입을 수행 할 수 있습니까? 그렇다면 어떻게해야합니까?

답변

0

ValidationAttribute에서 확장하여 사용자 지정 특성을 만들고 데이터 저장소 종속성을 생성자에 전달할 수 있습니다. 이제이 속성을 모델의 속성에 적용하고 DI 컨테이너에 등록하십시오.

그리고 예, 종속성은 런타임에도 삽입 될 수 있습니다. Castle Windsor DI에서는 'Transient'와 같은 종속성에 대해 LifeStyles를 지정할 수 있습니다. spring.net에 대해 이와 비슷한 것이 있어야합니다.

2

속성 메소드의 값은 상수 값으로 제한됩니다. 예 : 문자열, 숫자 및 typeof.

당신이 할 수있는 일은 RegularExpressionAttribute에서 정규 표현식을 찾는 키를 생성자에서 가져 오는 새로운 속성을 파생시킵니다.

[MyRegularExpression("Field1")] 
public string Field1 { get; set; } 

속성 :

[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter, AllowMultiple = false)] 
public class MyRegularExpressionAttribute : RegularExpressionAttribute 
{ 
    public MyRegularExpressionAttribute(string key) 
     : base(FindRegex(key)) 
    { } 

    private static string FindRegex(string key) 
    { 
     ... 
    } 
}