asp.net mvc unobtrusive validation在渲染时显示验证错误消息

时间:2013-01-28 16:38:28

标签: asp.net-mvc unobtrusive-validation

简短版本:为什么在data-valmsg-replace='false'时默认情况下验证邮件是否可见?以及如何修复它?

详细信息:

在我的剃刀中我做到了:

@Html.TextArea("Description", Model.FormData.Description, new { @class="span12" })
@Html.ValidationMessage("Description", L("Description is required"))

验证消息呈现为(按预期):

<span class="field-validation-valid" data-valmsg-for="Description" data-valmsg-replace="false">Description is required</span>
页面初始渲染时

和消息可见。它似乎是设计的,但没有意义(注意data-valmsg-replace='false')。

问题

  1. 此设计决策背后的原因是什么,具体来说,data-valmsg-replace='false'附带默认情况下会显示错误消息?

  2. 是否有比添加.field-validation-valid { display: none; }

  3. 更好的解决方案

2 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,结果是Global.asax中的默认设置:

Solution

<add key="ClientValidationEnabled" value="false" />
<add key="UnobtrusiveJavaScriptEnabled" value="false" />

答案 1 :(得分:0)

以下帖子可能包含推测

创建ASP.NET MVC项目将遵循以下规则:

.field-validation-valid {
  display: none;
}

这意味着验证错误容器将不可见OOB(在我的情况下,我未能将该规则延伸到我自己的site.css)

如果没有错误,为什么不对容器进行不显眼的验证.hide()? 假设我希望在没有错误时将我的错误容器设置为绿色复选标记。如果unobtrusive.validation隐藏容器,那么我就不能这样做。

所以我的答案是:

  1. 不引人注意应该是不显眼的,这就是默认情况下它不会隐藏容器的原因。你希望它隐藏起来 - 你按照你想要的方式设计它。
  2. .field-validation-valid { display: none; }是合理的,也是我能想到的最佳解决方案。