1

我使用ASP.NET MVC 3,我有我添加自己的自定義驗證屬性: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 } } 
     }; 
    } 
} 

注意它是如何實現IClientValidatable。這會將parameters1設置呈現爲頁面中字段中的HTML 5數據屬性。

我的問題是設置的值可以改變,但每次改變它仍然呈現數據屬性中的舊值。我猜這是緩存在某處。無論如何刪除緩存?

我會很感激的幫助。謝謝

回答

0

我發現了一個黑客來解決這個問題。您需要重新啓動應用程序。這可以使用HttpRuntime.UnloadAppDomain()以編程方式完成。如果您的應用程序未處於完全信任模式,請參閱http://www.west-wind.com/weblog/posts/2006/Oct/08/Recycling-an-ASPNET-Application-from-within

+0

有沒有辦法做到這一點,而無需重新啓動應用程序/池?在生產環境中,這是不可行的,否則所有活動會話都會丟失,至少可以說我沒有看到 – mrd3650 2016-04-27 13:31:28

+0

。自從我發佈這個問題以來,我一直沒有看過,所以也許有人提出了一個更好的方法。 – nfplee 2016-04-27 15:32:31