2017-07-19 4 views
-1

MVC C#Appを作成しましたが、すべてのプロパティが[必須]であるViewModelを作成しました。私は「このようクリックイベントをキャプチャするためにjQueryを使用することにしましたので、いくつかの検証を行うために、送信ボタンからクリックイベントをキャプチャする必要があるということです。jQueryでe.preventDefault()を使用するとMVCが動作しません

$("#IngresarInfo").click(function (e) { 
      e.preventDefault(); 
      $("#idISSSBuscar").rules("remove", "required"); 
      $.ajax({ ... some code here 

が、私はe.preventDefault();検証[を使用している場合required]は動作しません(エラーメッセージは表示されません)。そして、私が望むのは、すべてのフォーム入力が完了した後で検証を行うことをまず検証することです。

私のコードに何が問題なのか教えていただけますか?

+1

'私が望むのは、すべてのフォーム入力が完了したことを検証した後、検証を行うことです。=>これはどういう意味ですか? –

+0

'私が欲しいのは、すべてのフォーム入力が完了した後に検証が行われることをまず検証することです。検証の前に検証をしたいのですが...?それは意味がない私は恐れている –

+0

@ RoryMcCrossan私は書いた:いくつかのバリデーションをクリアするには、送信ボタンからクリックイベントをキャプチャする必要がありますか? –

答えて

0

はい、e.PreventDefault()が呼び出されると、デフォルトのプロセスは停止します。つまり、サーバー側のコントローラの動作はデフォルトでは呼び出されません。このメソッドが呼び出された場合はjQueryのドキュメント

から

は、イベントのデフォルトのアクションは はトリガされません。

e.PreventDefaultの呼び出し後にコントローラアクションを続行する場合は、自分でフォームを送信する必要があります。

もう1つの質問です。なぜこれをやるの?ビューモデルの既定の検証をMVCから離れる場合は、ポストアクションでModel.IsValidを探し、検証エラーで元のビューを返すことができます。

あなたはこの正確な振る舞いを模倣しようとしているようですが、私はあなたがそれによって何を得るのか分かりません。

+0

ありがとうございますチームメイトがそれを達成するために達成し、私のロジックと全く同じコードを書いたが、動作しなかったので、この方法でやりたい –

関連する問題