我为View Model类添加了ValidationSummary Html帮助器,它有5个必填字段。它的作品得到了很好的红色单词缺失1,缺少2等。 但我需要只显示一条消息,而不是五条消息(类似于:“您的输入无效。”)。可以使用ValidationSummary吗?
答案 0 :(得分:14)
您有两种选择(至少):
使用验证摘要并排除属性错误:
@Html.ValidationSummary(true, "The input is not valid")
或将错误消息与您的操作中的自定义关联关联:
if (!ModelState.IsValid)
{
ModelState.AddModelError("myerrorsummary", "The input is not valid");
}
并将其显示在您的页面上:
@Html.ValidationMessage("myerrorsummary")
答案 1 :(得分:4)
如果ModelState无效,如果您只想显示消息,则可以尝试跳过帮助程序。只需检查ModelState
中的ViewData
即可。
@if (!ViewData.ModelState.IsValid)
{
<p>Your input is not valid.</p>
}
答案 2 :(得分:2)
如果您查看MVC3源代码,您会看到,目前,如果您在ValidationSummary
时使用excludePropertyErrors=true
UnobtrusiveJavaScriptEnabled
,则不会显示任何验证摘要。
我能够使用启用了UnobtrusiveJavascript的MVC3显示单个消息,以进行客户端验证。不要使用@Html.ValidationSummary
,并渲染:
@{
//Show the message when there are server side errors
ViewBag.ValidationSummaryClass = ViewData.ModelState.IsValid ? "validation-summary-valid" : "validation-summary-errors";
}
<div class="@ViewBag.ValidationSummaryClass" data-valmsg-summary="true">
<span>Before you can continue, please make sure you have completed the mandatory fields highlighted above.</span>
<ul style="display:none"/>
</div>
请注意display:none
,不显眼的javascript仍然会在列表中填入错误消息,但它们会被隐藏。
答案 3 :(得分:0)
我在MVC3中使用的一种蛮力方法:
if (!ModelState.IsValid)
{
ModelState.AddModelError("", "Some contextual error message");
}
并将其显示在您的页面上:
<% if(!ViewData.ModelState.IsValid) { %>
<span class="error"><%=ViewData.ModelState[String.Empty].Errors[0].ErrorMessage %> </span>
<% } %>