我正在开发一个MVC 4项目,即使在一个简单的GET方法上也不断显示ValidationMessage,该方法不对复杂类型进行验证或模型绑定:
//location/{locationId}/announcement
[HttpGet]
public ActionResult LocationMakeAnnouncement(int locationId)
{
var pageViewModel = this.BuildLocationMakeAnnouncementViewModel(locationId);
return View(pageViewModel);
}
BuildLocationMakeAnnouncementViewModel
只会构建ViewModel,而不会触及ModelState。
然后在我的观点上:
<span class="errorArea">@Html.ValidationMessage("ProductText", " ", new { @class = "inputErrorIcon" })</span>
哪一个发出:
<span class="errorArea"><span class="field-validation-valid inputErrorIcon" data-valmsg-for="ProductText" data-valmsg-replace="false"> </span></span>
输出ModelState表明它没有任何错误
@ViewData.ModelState.Values.Any(x => x.Errors.Count >= 1)
为什么ValidatioMessage会在没有错误时输出?
有什么建议吗?
答案 0 :(得分:1)
如果你想保持启用客户端验证,我在ValidationSummary
遇到了类似的问题,但我相信这只是渲染这些东西的方式。您需要做的就是将“有效”内容的样式设置为display: none
。在你的情况下,这似乎是:
.field-validation-valid { display: none; }
答案 1 :(得分:0)
如果启用ClientValidationEnabled和UnobtrusiveJavaScriptEnabled,则会出现这种情况。
因此将它们设置为false可解决我的问题:
<add key="ClientValidationEnabled" value="false" />
<add key="UnobtrusiveJavaScriptEnabled" value="false" />