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

注意它是如何实现IClientValidatable的。这parameters1会将设置作为 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 回答