3

简短版本:为什么默认情况下验证消息可见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; }

4

2 回答 2

0

以下帖子可能包含猜测

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

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

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

.hide()如果没有错误,为什么不不显眼地验证容器?
假设我希望我的错误容器在没有错误时设置为绿色复选标记。如果 unobtrusive.validation 隐藏了容器,那么我就无法做到这一点。

所以我的答案是:

  1. unobtrusive 应该是不显眼的,这就是它默认不隐藏容器的原因。您希望它隐藏 - 您可以按照自己的方式设计它。
  2. .field-validation-valid { display: none; }是合理的,也是我能想到的最佳解决方案。
于 2013-01-28T20:29:02.463 回答
-1

我有同样的问题,原来它是 Global.asax 中的默认设置:

解决方案

<add key="ClientValidationEnabled" value="false" />
<add key="UnobtrusiveJavaScriptEnabled" value="false" />
于 2013-01-28T17:12:35.550 回答