2013-05-15 65 views
0

我將值存儲在我的web.config中。這些是網站的設置。例如,事件最小年齡限制爲16.我已經創建了自己的數據註釋來執行此操作,並使用配置管理器取回值,但現在我想創建客戶端版本。在mvc中的web配置值不顯眼的驗證

我現在在一個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或我必須硬編碼最小年齡值?我想盡量避免這種情況。

回答

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; 
    } 
); 
+0

酷。我今天會檢查一下。 –