Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVC客户端错误消息未显示_C#_Validation_Asp.net Mvc 3_Annotations - Fatal编程技术网

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" })