我的问题是
我想在mvc3中进行验证,包括客户端和服务器端。
我知道如何在服务器端使用验证,但我在客户端验证方面存在问题。
假设我有一个带有剃刀的文本框
**Email : @html.Textboxfor(m=>m.Email)**
或 的
因此错误会显示为荣耀电子邮件
现在我想在客户端和服务器端验证电子邮件。
对于客户端我想使用我的owan javascript file.on提交表单首先验证
在客户端,如果其验证然后表单将提交和 服务器端的验证不会检查。 但是如果用户从浏览器中禁用脚本而不是服务器端验证将被执行,
答案 0 :(得分:0)
应始终启用服务器端验证,并且比客户端验证更强大。有些事情可能很难在客户端验证,比如模型或模型属性之间的复杂交互。
但是,您可以使用jQuery
验证器插件(VS MVC项目模板附带)进行客户端验证。
您在服务器上具有验证属性,该属性实现IClientValidatable
:
public class MyValidationAttribute : ValidationAttribute, IClientValidatable
{
public override bool IsValid(object value)
{
if (value == null) {
return true;
}
//Add validation rules
if (false) {
return false;
}
return true;
}
public override string FormatErrorMessage(string name)
{
return "Please provide valid values."
}
public IEnumerable<System.Web.Mvc.ModelClientValidationRule> GetClientValidationRules(System.Web.Mvc.ModelMetadata metadata, System.Web.Mvc.ControllerContext context)
{
return new ModelClientValidationRule[] { new ModelClientValidationRule {
ErrorMessage = "Please provide valid values.",
ValidationType = "validationrule"
} };
}
}
在客户端,您需要添加验证规则:
jQuery.validator.addMethod("validationrule", function (value, element, param) {
if (value == "") {
return false;
}
return true;
});
jQuery.validator.unobtrusive.adapters.addBool('validationrule');
确保在jQuery ready处理程序之外添加它。请参阅this question的已接受答案。