C# 如何使用html.ValidationMessageFor

C# 如何使用html.ValidationMessageFor,c#,jquery,asp.net-mvc-4,C#,Jquery,Asp.net Mvc 4,我试图让我的视图在用户输入无效内容(如字符串,其中需要数字)时在文本框旁边显示错误消息。相反,我得到了一个丑陋的错误页面,说当用户按下提交时验证失败 以下是我的部分观点: @model MembershipTest.ViewModels.AddDriverViewModel <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script> <

我试图让我的视图在用户输入无效内容(如字符串,其中需要数字)时在文本框旁边显示错误消息。相反,我得到了一个丑陋的错误页面,说当用户按下提交时验证失败

以下是我的部分观点:

@model MembershipTest.ViewModels.AddDriverViewModel

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

@{
Layout = "~/Views/Shared/_Layout.cshtml";
ViewBag.Title = "Add Drivers";
}

@using (Html.BeginForm("AddDriver", "Driver"))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)

<fieldset>
<legend>Customer Information</legend>
 <table>
     <tr>
         <td>
             @Html.Label("First Name:")
             @Html.TextBoxFor(m => m.Driver.F_Name)
             @Html.ValidationMessageFor(m => m.Driver.F_Name)
         </td>
         <td>
             @Html.Label("Gender:")

             @Html.RadioButtonFor(m => m.isMaleChecked, "true") Male
             @Html.RadioButtonFor(m => m.isMaleChecked, "false")Female
         </td>
     </tr>
     <tr>
         <td>
             @Html.Label("Last Name:")
             @Html.TextBoxFor(m => m.Driver.L_Name)
             @Html.ValidationMessageFor(m => m.Driver.L_Name)
         </td>
在控制器的post方法中,我确保使用

if (ModelState.IsValid)

如果用户碰巧在“名字”文本框中输入了大约50个字符,我希望在他们从该文本框中弹出选项卡时,使用Html.ValidationMessageFor()显示一个错误,以便他们在按submit之前看到它。我是否错过了一些jquery来实现这一点?也许我需要包含一些使用语句?

太简单了……我只是没有将ErrorMessage字段添加为[Required]装饰器的一部分。例如:

[Required(ErrorMessage = "First name is required")]
[StringLength(30, ErrorMessage = "Name can be no larger than 30 characters")]
public string F_Name { get; set; }

[Required(ErrorMessage = "Last name is required")]
[StringLength(30, ErrorMessage = "Name can be no larger than 30 characters")]
public string L_Name { get; set; }

现在,如果用户没有在名称字段中输入任何内容,或者输入了超过30个字符的内容,则Post方法不会执行,用户会收到一条小消息,告诉他们出了什么问题。

请显示您的完整型号和控制器代码。你犯了什么可怕的错误?会有帮助的。谢谢你的回答!它帮助了我!需要注意的是,您还可以在视图中定义验证消息,如:@Html.ValidationMessageFor(x=>x.ZipCode,“邮政编码只能是5位数字”),那么ValidationMessage与ErrorMessage相关吗?
[Required(ErrorMessage = "First name is required")]
[StringLength(30, ErrorMessage = "Name can be no larger than 30 characters")]
public string F_Name { get; set; }

[Required(ErrorMessage = "Last name is required")]
[StringLength(30, ErrorMessage = "Name can be no larger than 30 characters")]
public string L_Name { get; set; }