web-dev-qa-db-ja.com

ASP.Net Core:目立たない検証が機能しない

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で問題なく機能するためです。

10
Arrrr

検証関連のスクリプトが、使用している環境の下に配置されていることを確認してください。開発または生産。

しばらく苦労していましたが、スクリプトを確認すると、スクリプトは開発セクションに配置され、アプリは本番環境を使用して実行されていました。

スクリプトを本番環境に置くと、動作し始めました。

12
Suresh M

私の場合、問題はまったく異なっていました。

検証スクリプトの参照は、default/built in _ValidationScriptsPartial.cshtmlにあり、これを追加してページに追加しました。

@section Scripts 
{
     <partial name="_ValidationScriptsPartial"/>    
}

ビューcshtmlの最後にあります。

開発者ツールで正しく参照されていることがわかったので、すべて問題ないと思いました。

enter image description here

しかし、_ValidationScriptsPartialのパスが正しくないことが判明しました!ご覧のとおり、利用可能な縮小バージョンのみがあります... 2番目のバージョンの場合、distサブフォルダーがありません。

enter image description here

これは私が触れなかった定型コードであったため、非常に驚​​きました。

1
Bartosz

目立たないクライアント側の検証が機能しない場合は、以下を確認してください。

  1. JavaScriptのブラウザサポートが無効になっていないことを確認してください
  2. 次のクライアント側検証ライブラリが指定された順序でロードされていることを確認してください

    1. jquery.js
    2. jquery.validate.js
    3. jquery.validate.unobtrusive.js
  3. これらの検証ライブラリが、テスト対象の環境にロードされていることを確認してください。開発、ステージング、本番など。
0
vivek nuna