Web配置值在MVC不显眼的验证
本文关键字:不显眼 验证 MVC 配置 Web | 更新日期: 2023-09-27 18:13:38
我将值存储在我的web.config中。这些是网站的设置。例如,事件最小年龄限制是16岁。我已经创建了自己的数据注释来做到这一点,并使用configurationManager拉回值,但现在我想创建一个客户端版本。
我有这个在ValidationExtender.js文件的时刻。
jQuery.validator.addMethod("checkUserAgeOfEvent", function (value, element, param) {
var dob = $("#DateOfBirth").val();
//do validation here
if(ConvertToAge(dob) == minAge)
{
// do something
}
return true;
});
jQuery.validator.unobtrusive.adapters.addBool("checkUserAgeOfEvent");
我的问题是,我如何包括我的价值从网络。配置还是我必须硬编码最小值?我想尽量避免这种情况
我已经创建了我自己的数据注释来做到这一点
如果您实现了自定义数据注释的IClientValidatable
接口,您可以向客户端添加自定义值,如我在following post
中所示。
基本上在你的GetClientValidationRules
方法中,你将把这个minAge
传递给客户端:
public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
{
var rule = new ModelClientValidationRule
{
ErrorMessage = this.ErrorMessage,
ValidationType = "userage",
};
rule.ValidationParameters.Add("minAge", ConfigurationManager.AppSettings["MinAge"]);
yield return rule;
}
可以很容易地在客户端检索到:
jQuery.validator.addMethod(
"checkUserAgeOfEvent",
function (value, element, params) {
var dob = $("#DateOfBirth").val();
var minAge = params.minAge;
if(ConvertToAge(dob) == minAge) {
// do something
}
return true;
}
);