Html.ValidationMessageFor未显示错误消息

时间:2014-12-23 07:56:30

标签: jquery asp.net-mvc-4

我的MVC4应用程序中有以下视图,但问题是Html.ValidationMessageFor帮助程序无效。 TextBox旁边没有显示错误消息:



@using (Html.BeginForm("Add", "Product", FormMethod.Post, new {id = "productForm"}))
{
    @Html.ValidationSummary(true)
    <table>
        <tr>
            <td>
                @Html.LabelFor(p => p.ProductName)
            </td>
            <td>
                @Html.EditorFor(p => p.ProductName)
                @Html.ValidationMessageFor((p => p.ProductName), "*")
            </td>
        </tr>
        <tr>
            <td>
                @Html.LabelFor(p => p.InStock)
            </td>
            <td>
                @Html.CheckBoxFor(p => p.InStock)
            </td>
        </tr>
    </table>
    <input type="submit" name="button" value ="@AppStrings.LabelAdd"/>
}
&#13;
&#13;
&#13;

我的模型定义如下:

&#13;
&#13;
public class Product
    {
        public int ProductId { get; set; }
        
        [Required(ErrorMessage = "Product name is required.")]
        public string ProductName { get; set; }
        
        public bool InStock { get; set; }
    }
&#13;
&#13;
&#13;

我的_Layout.cshtml文件中有以下内容,用于加载正确的jquery验证文件

&#13;
&#13;
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/jqueryval")
@Html.Script("jquery-ui-1.8.24.js", "jquery-ui-1.8.24.min.js")
&#13;
&#13;
&#13;

我的Web.config文件中也有以下内容:

&#13;
&#13;
  <appSettings>
    <add key="webpages:Version" value="2.0.0.0" />
    <add key="webpages:Enabled" value="false" />
    <add key="PreserveLoginUrl" value="true" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  </appSettings>
&#13;
&#13;
&#13;

毕竟,消息仍然没有出现在TextBox旁边。但是,客户端验证会启动,因为TextBox变为红色,但错误消息根本不会出现。我错过了什么?

2 个答案:

答案 0 :(得分:1)

应该是

@Html.ValidationMessageFor(p => p.ProductName, "*")

这将显示*作为验证消息,您可以放置​​任何其他文本代替*以显示为验证消息。如果您想要显示&#34; 需要产品名称。&#34;作为验证消息,您可以使用

@Html.ValidationMessageFor(p => p.ProductName)

因为它会从您的模型中获取错误消息。

答案 1 :(得分:0)

尝试将以下引用添加到您的 cshtml 文件中 -

<script src="~/Scripts/jquery-3.4.1.min.js"></script>
<script src="~/Scripts/jquery.validate.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.js"></script>