目立たない検証を有効にして ASP.NET MVC を使用しているときに、ID を非表示フィールドとして Razor フォームに埋め込む必要が何度もありました。常に検証メッセージを含めることを学びました。たとえば、次のようになります。
@Html.HiddenFor(x => x.ParentId)
@Html.ValidationMessageFor(x => x.ParentId)
検証メッセージが省略されていると、送信時に JavaScript エラーがトリガーされます。これは、非表示フィールドにはデフォルトで、対応する検証エラー メッセージを必要とする目立たない検証属性が含まれているためです。フィールドを手作業でコーディングすることで、探している html 出力を取得できることがわかりました。
<input data-val="false" id="ParentId" name="ParentId" type="hidden" value="@Model.ParentId" />
しかし、このアプローチを取ると、InputExtensions.HiddenFor
ヘルパー メソッドを使用する利点が失われます。JavaScript エラーを生成せずに拡張メソッドを単純に使用する方法はありますか?
編集:
これは jquery 検証の問題でした。私の jquery validate スクリプトはバージョン 1.8.1 のままでした (以下の注を参照)。手動で jquery.validate 1.11.1 に更新すると、問題はなくなりました。
注:
jQuery 検証が更新されなかった理由は、元の jquery 検証 1.8.1 スクリプトが NuGet によってインストールされなかったためです。このシナリオでは、NuGet はライブラリを検出して更新を提案しますが、更新が実行されても元のスクリプトは置き換えられません。これは、NuGet によって致命的ではない警告として扱われます。教訓: NuGet の出力をすべて読んでください。