1

ASP.NET MVC 3 を使用しています。独自のカスタム検証属性を追加しました。

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

実装方法に注目してくださいIClientValidatableparameters1これにより、設定が HTML 5 データ属性としてページのフィールドにレンダリングされます。

私が抱えている問題は、設定の値が変更される可能性があることですが、変更されるたびにデータ属性内の古い値がレンダリングされます。これはどこかにキャッシュされていると思います。とにかくキャッシュを削除する方法はありますか?

助けていただければ幸いです。ありがとう

4

1 に答える 1

0

これを解決するハックを見つけました。アプリケーションを再起動する必要があります。これは、HttpRuntime.UnloadAppDomain() を使用してプログラムで行うことができます。アプリケーションが完全信頼モードでない場合は、http://www.west-wind.com/weblog/posts/2006/Oct/08/Recycling-an-ASPNET-Application-from-within を参照してください

于 2012-07-15T12:46:16.240 に答える