0

複雑なタイプの検証やモデルバインディングを行わない単純なGETメソッドでも、ValidationMessageを常に表示するMVC4プロジェクトに取り組んでいます。

//location/{locationId}/announcement
[HttpGet]
public ActionResult LocationMakeAnnouncement(int locationId)
{
    var pageViewModel = this.BuildLocationMakeAnnouncementViewModel(locationId);
    return View(pageViewModel);
}

唯一はBuildLocationMakeAnnouncementViewModelViewModelを構築し、ModelStateには触れません。

それから私が持っているビューで:

<span class="errorArea">@Html.ValidationMessage("ProductText", " ", new { @class = "inputErrorIcon" })</span>

放出するもの:

<span class="errorArea"><span class="field-validation-valid inputErrorIcon" data-valmsg-for="ProductText" data-valmsg-replace="false"> </span></span>

ModelStateを出力すると、エラーがないことがわかります

@ViewData.ModelState.Values.Any(x => x.Errors.Count >= 1)

エラーがないのにValidatioMessageが出力するのはなぜですか?

助言がありますか?

4

2 に答える 2

1

クライアントの検証を有効にしたい場合は、 で同様の問題がValidationSummaryありましたが、これらがレンダリングされる方法にすぎないと思います。「有効な」もののスタイルを に設定するだけですdisplay: none。あなたの場合、それは次のようです:

.field-validation-valid { display: none; }
于 2012-10-31T05:40:39.223 に答える
-1

これは、ClientValidationEnabled と UnobtrusiveJavaScriptEnabled を有効にした場合の動作であることがわかります。

したがって、それらを false に設定すると、問題が修正されました。

<add key="ClientValidationEnabled" value="false" />
<add key="UnobtrusiveJavaScriptEnabled" value="false" />
于 2012-10-31T04:45:07.617 に答える