假设这是我的观点...
<div class="control-group">
@Html.LabelFor(model => model.Title, new { @class = "control-label" })
@Html.ValidationMessageFor(model => model.Title, null, new { @class = "help-inline" })
<div class="controls">
@Html.EditorFor(model => model.Title)
</div>
</div>
如果出现错误我们如何隐藏Label
并显示validation message
代替Label
?
请在此建议...
答案 0 :(得分:0)
只有在ModelState有效时才能显示Label:
<div class="control-group">
@if (this.ViewData.ModelState.IsValid)
{
@Html.LabelFor(model => model.Title, new { @class = "control-label" })
}
@Html.ValidationMessageFor(model => model.Title, null, new { @class = "help-inline" })
<div class="controls">
@Html.EditorFor(model => model.Title)
</div>
</div>
请注意,如果您正在使用客户端验证,则还需要连接客户端上的validate方法并切换相应的标签可见性。
答案 1 :(得分:0)
只是为了赞美Darin的答案,如果您使用客户端验证,则需要执行类似
的操作$("#myForm").validate({
invalidHandler: function(event, validator) {
$('.control-label').hide();
}
});
否则标签不会隐藏。
当页面加载时,仍然值得检查ModelState.IsValid
,尽管用户已禁用JS。