0

作業中の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変数が正しく設定されています。何が悪いのか、どこで問題を探すべきなのか、何か考えはありますか?アドバイスありがとうございます。

4

1 に答える 1

0

問題を解決しました。ページの他の場所に存在していたTelerikグリッドは、何らかの理由で検証と競合していて、それを壊していたようです。jquery検証スクリプトをグリッドに手動で登録すると、問題が解決しました。

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

Telerikライブラリの新しいバージョンでこの特定の問題を解決した可能性があると思います。

于 2011-08-24T13:29:21.963 に答える