我的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;
我的模型定义如下:
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;
我的_Layout.cshtml文件中有以下内容,用于加载正确的jquery验证文件
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/jqueryval")
@Html.Script("jquery-ui-1.8.24.js", "jquery-ui-1.8.24.min.js")
&#13;
我的Web.config文件中也有以下内容:
<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;
毕竟,消息仍然没有出现在TextBox旁边。但是,客户端验证会启动,因为TextBox变为红色,但错误消息根本不会出现。我错过了什么?
答案 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>