ASP.Net Core(ASP.Net MVC 5とは異なり)のクライアント側の検証が機能していません。私は次のコードを持っています:
public class CountryModel{
[Required]
public String Title {get; set;}
}
と私のビューページで
using(Html.BeginForm()){
@Html.LabelFor(x=> x.Title)
@Html.ValidationMessageFor(x=> x.Title)
@Html.EditorFor(x=> x.Title)
<Button>Add</Button>
}
次のスクリプトがページの最後に追加されています。
...
<script src="~/lib/jquery/dist/jquery.js"></script>
<script src="~/lib/jquery-validation/dist/jquery.validate.min.js"></script>
<script src="~/lib/jquery-validation-unobtrusive/jquery.validate.unobtrusive.min.js"></script>
しかし、それは失敗します。ブラウザでソースを表示してスクリプトを確認しましたが、スクリプトは正しく読み込まれています。アクションAPIにブレークポイントを指定して再確認しましたが、追加ボタンを押すたびにブレークポイントに到達し、クライアント側の検証が失敗することを意味します。
ASP.Net Coreに追加の構成はありますか?このアプローチはMVC5で問題なく機能するためです。
私の場合、問題はまったく異なっていました。
検証スクリプトの参照は、default/built in _ValidationScriptsPartial.cshtml
にあり、これを追加してページに追加しました。
@section Scripts
{
<partial name="_ValidationScriptsPartial"/>
}
ビューcshtmlの最後にあります。
開発者ツールで正しく参照されていることがわかったので、すべて問題ないと思いました。
しかし、_ValidationScriptsPartial
のパスが正しくないことが判明しました!ご覧のとおり、利用可能な縮小バージョンのみがあります... 2番目のバージョンの場合、dist
サブフォルダーがありません。
これは私が触れなかった定型コードであったため、非常に驚きました。
目立たないクライアント側の検証が機能しない場合は、以下を確認してください。
次のクライアント側検証ライブラリが指定された順序でロードされていることを確認してください