C# MVC客户端错误消息未显示
我想在表单上实现客户端验证,但当我输入错误数据时,没有显示任何错误消息。以下是我的型号代码: 型号:C# MVC客户端错误消息未显示,c#,validation,asp.net-mvc-3,annotations,C#,Validation,Asp.net Mvc 3,Annotations,我想在表单上实现客户端验证,但当我输入错误数据时,没有显示任何错误消息。以下是我的型号代码: 型号: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.ComponentModel.DataAnnotations; namespace LayoutProject.Models { public class Book {
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
namespace LayoutProject.Models
{
public class Book
{
public int BookId { get; set; }
[Required]
public String Title { get; set; }
public String Author { get; set; }
}
}
我的部分观点是:
@model LayoutProject.Models.Book
<h4>Books</h4>
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<table>
<tr>
<td>@Html.LabelFor(d=>d.BookId)</td>
<td>@Html.TextBoxFor(d=>d.BookId)</td>
</tr>
<tr>
<td>@Html.LabelFor(d=>d.Title)</td>
<td>@Html.TextBoxFor(d=>d.Title)
@{ Html.ValidateFor(d => d.Title); }
@Html.ValidationMessageFor(d=>d.Title, "", new { @class = "text-danger" })
</td>
</tr>
<tr>
<td>@Html.LabelFor(d=>d.Author)</td>
<td>@Html.TextBoxFor(d=>d.Author)</td>
</tr>
</table>
我已经在布局中添加了所需的脚本:验证脚本和不引人注目的脚本。但每当我提交表单时,标题字段为空(这是必填字段),它就会进入控制器,并且不会显示任何错误消息。知道是什么导致了这个错误吗
我是否也需要添加所有这些脚本:
<script src="@Url.Content("~/Scripts/jquery-1.5.1.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery-ui-1.8.11.js")" type="text/javascript"></script>
<script src="../../Scripts/jquery-1.5.1-vsdoc.js" type="text/javascript"></script>
<script src="../../Scripts/jquery.validate-vsdoc.js" type="text/javascript"></script>
<script src="@Url.Content("/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script>
我看不到您设置了任何验证消息,因此没有要显示的消息。这可能是你问题的解决方案
[Required(ErrorMessage = "Your Error message here")]
在cshtml视图中,不要覆盖上面设置的ErrorMessage,请执行以下操作:
@Html.ValidationMessageFor(d=>d.Title, null, new { @class = "text-danger" })
@Html.ValidationMessageFor(d=>d.Title,“,new{@class=“text danger”})
在这里,您将validationmessage设置为:“”。
如果您将其更改为:
@Html.ValidationMessageFor(d=>d.Title, null, new { @class = "text-danger" })
它应该会起作用
编辑1:
将[Required]保留在您的模型中。当模型无效时,您在控制器中返回了错误的视图。
更改<代码>返回视图(书本)代码>返回视图(“实际视图”,书本) 删除
@{Html.ValidateFor(d=>d.Title);}
(不确定您认为这在做什么)。只要您没有禁用客户端验证,并且包含了jquery{version}.js
,jquery.validate.js
和jquery.validate.unobtrusive.js
(按照正确的顺序,并且没有重复项),客户端验证将正常工作,我删除了'@{Html.ValidateFor(d=>d.Title);}'我已经按正确的顺序添加了脚本,但仍然不会显示错误消息。我正在使用谷歌浏览器,最新版本。ValidateFor,我想会验证字段是否为空。检查
部分中
的
文件,设置正常。我真的不知道问题出在哪里。你确定没有在浏览器中禁用javascript吗?不,我想使用默认错误消息,而不是自定义错误消息。但是,我仍然尝试了您的解决方案,错误消息仍然不会显示。这是错误的,当您在属性中不提供错误消息时,将使用默认消息
@Html.ValidationMessageFor(d=>d.Title, null, new { @class = "text-danger" })
@Html.ValidationMessageFor(d=>d.Title, null, new { @class = "text-danger" })