使用不显眼的jquery在MVC 3.0中清除验证消息

时间:2011-08-23 19:27:01

标签: model-view-controller validation telerik unobtrusive-validation

我正在尝试在我正在处理的Web应用程序中实现简单的客户端验证,并且实际的验证消息正在运行。但是,当我更正错误输入并且控件失去焦点时,验证消息不会清除,并且无效类仍保留在控件上。这是相关的视图代码

@model Project.CommentViewModel

@using (Html.BeginForm())
{
    @Html.ValidationSummary(true);

    <div class="Comment">
        <div class="CommentInfo">
            Post New Comment:
        </div>
        <div class="CommentText">
            <div class="commentEdit ">
                @Html.TextAreaFor(x => x.CommentText, new { @class = "NewCommentTextBox" })
                @Html.ValidationMessageFor(x => x.CommentText)
            </div>
            @Html.HiddenFor(x => x.ProjectID)
        </div>
     </div>
}

视图模型属性

[StringLength(50)]
public string CommentText { get; set; }

正如我之前提到的,一旦注释过长而控件失去焦点,错误消息就会按预期出现。但是,如果错误已修复,则错误消息不会消失,控件将保持红色。我的_Layout页面包含正确顺序的相关脚本文件,我的配置文件正确设置了appSetting变量。知道什么是错的或我应该在哪里寻找问题?非常感谢任何建议。

1 个答案:

答案 0 :(得分:0)

解决了这个问题。页面上其他位置出现的Telerik网格似乎与验证有些冲突,并打破了它。使用网格手动注册jquery验证脚本解决了该问题。

@(Html.Telerik().ScriptRegistrar().DefaultGroup(group =>                   
                group.Add("jquery.validate.js").Add("jquery.validate.unobtrusive.js")))

我认为他们可能已经使用较新版本的Telerik库解决了这个特定问题。