ASP.NET MVC 3 IClientValidatable属性 - 清除参数缓存

时间:2012-07-15 00:15:51

标签: asp.net-mvc-3 client-side-validation validationattribute

我正在使用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数据属性到页面上的字段中。

我遇到的问题是设置的值可能会发生变化,但每次更改时它仍然会在数据属性中呈现旧值。我猜这是在某个地方缓存的。反正有没有删除缓存?

我很感激帮助。感谢

1 个答案:

答案 0 :(得分:0)

我找到了解决这个问题的黑客。您需要重新启动应用程序。这可以使用HttpRuntime.UnloadAppDomain()以编程方式完成。如果您的应用程序未处于完全信任模式,请参阅http://www.west-wind.com/weblog/posts/2006/Oct/08/Recycling-an-ASPNET-Application-from-within