服务器端验证使用数据注释完成,而不是进行客户端验证

时间:2016-01-22 07:05:09

标签: c# validation asp.net-mvc-4 client-side-validation server-side-validation

当我在MVC中使用验证时,我编写了一个自定义属性来验证属性。最初,客户端验证无效,因为属性未注册。当我点击 save  联系服务器后按钮 它显示错误消息。谁能说出这个服务器端验证是如何进行而不是客户端验证?

属性用法 - >

[PhoneNumberHasPlus(ErrorMessage="Invalid number")]
public string PhoneNumber {get;set;}

属性 - >

 public class PhoneNumberHasPlusAttribute : RegularExpressionAttribute
    {
        public PhoneNumberHasPlusAttribute() :
            base(@"^[+][0-9' '\.\-\(\)]{10,20}$") { }

        public override string FormatErrorMessage(string name)
        {
            if (String.IsNullOrEmpty(ErrorMessage))
                ErrorMessage = "PhoneNumberWithPlus";
            return ErrorMessage;
        }
    }

2 个答案:

答案 0 :(得分:0)

您必须在行动中拥有Model.IsValid。该元素开启验证。

public ActionResult Create(Model model) {
    if (ModelState.IsValid) {
        // logic
    } 
    return View(dinner); 
}

请确保您的视图包含jQuery库的正确路径

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")"></script>

此外,您必须使用此Razor语法生成正确的html

@Html.EditorFor(model => model.ReleaseDate)
@Html.ValidationMessageFor(model => model.ReleaseDate)

Here您可以找到向MVC模型添加验证的完整教程。

答案 1 :(得分:0)

您需要在视图中包含jquery Val包 像这样

@section scripts
{
    @Scripts.Render("~/bundles/jqueryVal")
}