有没有办法如何通过MVC中的客户端验证执行“数据库”检查?
我有以下课程
public class EmailCheck : ValidationAttribute,IClientValidatable
{
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
string sErrorMessage = "Email already exists";
return new ValidationResult(sErrorMessage);
}
public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
{
ModelClientValidationRule validationRule = new ModelClientValidationRule();
validationRule.ValidationType = "checkemail";
validationRule.ErrorMessage = "Invalid Email Format";
validationRule.ValidationParameters.Add("param", "");
return new List<ModelClientValidationRule> { validationRule };
}
}
我希望客户端验证在关键字/丢失焦点上调用“IsValid”方法,而不仅仅是在“checkemail”javascript函数中进行常规javascript检查。
我的javascript函数如下:
//Validation for Well-Formed Email
jQuery.validator.addMethod("checkemail",
function (value, element, param) {
var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
if (!emailReg.test(value))
return false;
return true;
});
jQuery.validator.unobtrusive.adapters.add("checkemail", ["param"], function (options) {
options.rules["checkemail"] = options.params.param;
options.messages["checkemail"] = options.message;
});
如果有人能指导我正确的方向或提供类似的教程,我将不胜感激。
由于
答案 0 :(得分:4)
在您的模型中尝试使用“远程”属性
http://msdn.microsoft.com/en-us/library/gg508808%28v=vs.98%29.aspx
答案 1 :(得分:0)
Rusty是正确的,您需要在模型中使用Remote属性
这是另一个仅包含MVC电子邮件验证详细信息的示例