0

我将值存储在我的 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.config 中包含我的值,还是必须硬编码最小年龄值?我想尝试避免这种情况。

4

1 回答 1

2

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

如果您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;
    }
);
于 2013-05-15T15:37:44.420 回答