3

HTML コントロールにフォーム検証を配置するという問題に直面していますが、この問題を解決する方法を教えてください。

something.cshtml の私の HTML フィールド

<input type="text" id="AccidentDate" name="AccidentDate" />
@Html.ValidationMessage("AccidentDate")

コントローラーコード:

 [HttpPost]
 [AllowAnonymous]
 public ActionResult Index(Models.c objC)
 {
     if (String.IsNullOrEmpty(objC.AccidentDate))
     {
         ModelState.AddModelError("AccidentDate", "*");
     }

     return View(objClaimant);
  }

validationMessage はその入力フィールドの前に * の形式でエラーを発生させることに注意してくださいが、私の要件はその入力フィールドを赤で強調表示することです。

使用する場合に知っている最も重要なこと: @Html.TextBox("AccidentDate", Model.AccidentDate);完全に機能しますが、これを使用することは私の要件ではありません。

最後に、検証メッセージが発生した場合、他の方法で html 入力フィールドを赤くしようとしています。

任意の助けをいただければ幸いです。

4

1 に答える 1

1

わかりましたので、コメントするだけでなく、助けようと思いました。だから私はあなたが目立たない検証エンジンを使いたいと思っていると思います

だからあなたがするなら

@Html.TextBox("AccidentDate", Model.AccidentDate);

ソースを表示すると、次のように表示されます。

<input data-val="true" data-val-required="The AccidentDate field is required." 
   id="AccidentDate" name="AccidentDate" type="text" value="">

したがって、注目すべき重要なことはdata-val属性です。これらは基本的に、目立たないエンジンに「このフィールドは検証する必要があり、失敗した場合に表示する方法と内容は次のとおりです」と伝えます。

@Html.TextBox したがって、 which を使用せずにこれを行うには、HTML でこれらの属性を自分で作成する必要があります。

汚れたソリューション@HTML.TextBoxすばやく作成し、コードを実行して、HTML をカットアンドペーストします。あなたが望むものではないかもしれませんか?

編集 して必要な検証が必要なため、上記のdata-val="true" data-val-required="The AccidentDate field is required."属性が必要なものであり、明らかに独自のエラーメッセージに置き換えます

それで:

<input type="text" id="AccidentDate" name="AccidentDate" 
   data-val="true" data-val-required="The AccidentDate field is required." />
@Html.ValidationMessage("AccidentDate")

CSS クラス

Css クラスが適用されている必要があります。関連するコードは次のとおりです。

function onError(error, inputElement) {  // 'this' is the form element
        var container = $(this).find("[data-valmsg-for='" + escapeAttributeValue(inputElement[0].name) + "']"),
            replace = $.parseJSON(container.attr("data-valmsg-replace")) !== false;

        container.removeClass("field-validation-valid").addClass("field-validation-error");
        error.data("unobtrusiveContainer", container);

        if (replace) {
            container.empty();
            error.removeClass("input-validation-error").appendTo(container);
        }
        else {
            error.hide();
        }
    }

の中にjquery.validate.unobtrusive.js。このjsファイルを参照していることを確認し、上記のコードがヒットするかどうかを確認してください?

于 2013-04-05T11:52:24.493 に答える