首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用html.ValidationMessageFor

如何使用html.ValidationMessageFor
EN

Stack Overflow用户
提问于 2013-10-10 03:59:48
回答 1查看 81.2K关注 0票数 22

如果用户输入了无效的内容(比如需要数字的字符串),我会尝试让视图在文本框旁边给出错误消息。相反,我得到了一个丑陋的错误页面,告诉我当用户按下submit时验证失败。

这是我观点的一部分:

代码语言:javascript
复制
@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>

这是我的模型的相关部分:

代码语言:javascript
复制
[Required]
[StringLength(30)]
public string F_Name { get; set; }

[Required]
[StringLength(30)]
public string L_Name { get; set; }

在我的控制器的post方法中,我确保使用

代码语言:javascript
复制
if (ModelState.IsValid)

如果用户碰巧在first name文本框中输入了大约50个字符,我希望在用户按tab键离开文本框时使用Html.ValidationMessageFor()显示一个错误,这样他们就可以在按submit之前看到错误。我是不是错过了一些让这一切发生的jquery?也许我需要包含一些using语句?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-10-10 04:32:54

这很简单……我只是没有添加ErrorMessage字段作为所需装饰器的一部分。例如:

代码语言:javascript
复制
[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; }

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

票数 45
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19281415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档