1

내가 내 추가 내 자신의 지정 유효성 검사 속성이 ASP.NET MVC 3를 사용하고 있습니다 : 그것은 IClientValidatable을 구현하는 방법을ASP.NET MVC 3 IClientValidatable 특성 - 지우기 매개 변수 캐시

public class CustomAttribute : ValidationAttribute, IClientValidatable { 
    private readonly string _parameter1; 

    public CustomAttribute(string parameter1) { 
     _parameter1 = Global.Settings[parameter1]; 
    } 

    protected override ValidationResult IsValid(object value, ValidationContext context) { 
     ... 
    } 

    public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context) { 
     yield return new ModelClientValidationRule() { 
      ErrorMessage = FormatErrorMessage(metadata.DisplayName), 
      ValidationType = "custom", 
      ValidationParameters = { { "parameter1", _parameter1 } } 
     }; 
    } 
} 

공지 사항. 그러면 parameters1 설정이 HTML 5 데이터 속성으로 페이지의 필드에 렌더링됩니다.

내가 가진 문제는 설정 값을 변경할 수 있지만 변경 될 때마다 여전히 데이터 속성 내에 이전 값을 렌더링합니다. 나는 이것이 어딘가에 캐시되어 있다고 생각한다. 어쨌든 캐시를 제거 할 수 있습니까?

도움을 주시면 감사하겠습니다. 감사합니다

답변

0

나는 이것을 해결하기 위해 해킹을 발견했습니다. 응용 프로그램을 다시 시작해야합니다. 이 작업은 HttpRuntime.UnloadAppDomain()을 사용하여 프로그래밍 방식으로 수행 할 수 있습니다. 응용 프로그램이 완전 신뢰 모드가 아닌 경우 http://www.west-wind.com/weblog/posts/2006/Oct/08/Recycling-an-ASPNET-Application-from-within을 참조하십시오.

+0

응용 프로그램/풀을 다시 시작하지 않고이를 수행 할 수있는 방법이 있습니까? 프로덕션 환경에서는 그렇지 않습니다. 그렇지 않으면 모든 활성 세션이 손실되어 최소한으로 말합니다. – mrd3650

+0

볼 수있는 한 멀쩡합니다. 나는이 질문을 게시 한 이후로 보지 않았다. 그래서 누군가가 더 좋은 방법을 생각해 냈을 것이다. – nfplee