ValidationMessage显示在初始GET方法上

时间:2012-10-31 04:14:48

标签: asp.net-mvc asp.net-mvc-validation

我正在开发一个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会在没有错误时输出?

有什么建议吗?

2 个答案:

答案 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" />