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");

我的问题是,我如何包括我的价值从网络。配置还是我必须硬编码最小值?我想尽量避免这种情况

Web配置值在MVC不显眼的验证

我已经创建了我自己的数据注释来做到这一点

如果您实现了自定义数据注释的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;
    }
);