我正在使用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数据属性到页面上的字段中。
我遇到的问题是设置的值可能会发生变化,但每次更改时它仍然会在数据属性中呈现旧值。我猜这是在某个地方缓存的。反正有没有删除缓存?
我很感激帮助。感谢
答案 0 :(得分:0)
我找到了解决这个问题的黑客。您需要重新启动应用程序。这可以使用HttpRuntime.UnloadAppDomain()以编程方式完成。如果您的应用程序未处于完全信任模式,请参阅http://www.west-wind.com/weblog/posts/2006/Oct/08/Recycling-an-ASPNET-Application-from-within。