問題タブ [ajax.beginform]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - Ajax.Begin フォームと PartialView のリロード
Ajax.BeginForm() を使用してデータ (コメント フォーム) をコントローラー メソッドに投稿する状況があります。次に、このコントローラー メソッドは、Entity Framework を使用して (ModelState が有効である限り) データベースにいくつかの情報を書き込みます。
フォームの一部として、OnSucess オーバーロードを使用して、フォームが投稿された後に JavaScript 関数を実行します。この関数は、基本的に別のコントローラー メソッドを呼び出します (このメソッドは部分的なビューを返します。この場合はコメントのリストです)。
私の問題は、データベース内に存在することはわかっていますが、新しく追加されたコメントがコントローラーアクションから返されたビューに含まれていないことです。
これにより、2つの可能なオプションが得られます。
- コントローラ メソッドが実際に戻る前に、フォーム htmlhelper の OnSucess() 関数が実行されています。
- Entity Framework がデータをキャッシュしています。
2 の場合、明示的に指示されない限り、エンティティ フレームワークがデータをキャッシュしていることを認識していません。だから1だと思った。
さらに調査を進めるために、OnSucess メソッドとコントローラー アクションを変更しました。
私のフォーム定義は次のとおりです。
そして、私のコントローラーアクションは次のように定義されています(明確にするために詳細は省略されています):
最後に、クライアント側のメソッドは次のように定義されます。
戻り値が 0 の場合、関数 reloadBlogComments() が呼び出されます。
ただし、上記の変更は、上記の最初の仮定 (1) が実際には間違っていることを証明しています。コントローラーが値を返す前に、success 関数を実行することはできません。そのため、新しく追加されたコメントが残りのコメントと共に返されない理由について、私は完全に途方に暮れています。
私の reloadBlogComments() 関数は次のように定義されています。
を使用して reloadBlogComments() の呼び出しを遅らせても、一貫した setTimeout(function () { reloadBlogComments(); }, 3000);
値は得られません。
ここでどこが間違っていますか?
asp.net-mvc - データが不良の場合でも、Ajax.BeginFormは常にOnSuccessメソッドを起動します
フォームをコントローラーアクションに送信し、OnSuccessまたはOnFailureに基づいて応答を処理しようとしています。問題は、データが有効でなく、ModelState.IsValidテストに失敗した場合でも、OnSuccessメソッドが呼び出されることです。OnFailureメソッドを呼び出す必要があります。
私の見解:
コントローラーのアクション:
私のViewModel:
したがって、75文字を超える文字列をCategoryNameフィールドに入力すると、フォームがModelState.IsValidテストに合格せず、ビューに「カテゴリ名は75文字未満である必要があります」という注釈が付けられて返送されることがわかります。エラーメッセージ。ただし、OnFailureイベントを発生させるのではなく、OnSuccessイベントを発生させます。なんで?
前もって感謝します。
partial-views - Ajax.BeginForm を使用して、完全なサイト名を持つコントローラー アクションにデータを投稿する
以下のように、jQueryダイアログで開いている部分ビューからフルネームのコントローラーアクションにデータを投稿したい:
これの代わりに:
@using (Ajax.BeginForm(" SendMail ", " Ui ", (new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "email-dialog", OnSuccess = "onEmailSuccess" })))
私は以下が欲しい:
@using (Ajax.BeginForm(" http://www.MyWebsite.com/Ui/SendMail ", (new AjaxOptions { HttpMethod = "POST", UpdateTargetId = "email-dialog", OnSuccess = "onEmailSuccess" })))
何か案が ?
ajax - mvc ajax.beginform がパーシャルビューで動作しない
asp.net mvc4 で動作するカスケード ドロップダウンを取得しようとしています....今のところ、私は ajax.beginform から始めています...後でまっすぐ jquery に行くかもしれません....
私の問題は、最初の (トラック) ajax.beginform が呼び出され、コントローラーが呼び出され、次にこれが 2 番目の部分 (レール) に向けられることです...代わりにdivタグを使用してレンダリングしていません.... ajaxControlsでさまざまな値を試して、置換などを指定しました...違いはないようです...
私の問題は、私が含めているjavascriptにあるのではないかと思います....物事を単純に保つ必要があることを知っているいくつかにすべて戻しました....誰かが私が間違っていることを見つけることができますか? お願いします....
My (Mobile) Controller には、次の 2 つの方法があります。
私の LoadRailVehicle.cshtml
xSelectTrackPartial.cshtml で:
xSelectRailPartial.cshtml で
_viewstartを介して取得している _layout.cshtml を次に示します。
ajax - 各要素のIDをAjaxフォームからアクションに送信するにはどうすればよいですか?
Id
それを実行に移すには、どのアイテムをクリックするかが必要ですGetProduct()
。要素を使用hidden
しましたが、機能しません:
私の間違いはどこですか?どうすれば送信できますId
か?
c# - MVC4Ajax.BeginFormがUpdateTargetIdを置き換えない
Ajax.BeginFormがリターンパーシャルビューでターゲット要素を正しく更新しない問題に関するSOに関するトピックは非常にたくさんあります:
mvc4ajaxが同じページを更新するASP.NETMVC4
-Ajax.BeginFormおよびhtml5MVC
4(かみそり)-コントローラーは部分ビューを返すが、ページ全体が更新されている
MVC 4 Ajaxはページ内のPartialViewを更新していません。
ただし、これらはすべて、jQuery ajaxを手動で書き出すか、不足しているjavascriptファイルを含めることで解決されます。
関連するコントローラーコード:
私のレイアウトでは、これらのjQueryファイルを参照しています。さらに、ページが適切なパスを出力していること、および正しいファイルが検出されていることを確認しました。unobtrusive-ajax.min.js
との順序を切り替えてみましたが、うまくいきませvalidate.min.js
んでした。
さらに、私のWebサイトのルートweb.configとViewフォルダーのweb.configには、次のものが含まれています。
私は他にどこを見るべきか途方に暮れています。スローされるJavaScriptエラーはなく、コントローラーは適切にヒットされ、PartialViewResultを返します。HTMLのForm要素は、すべての正しいdata-
属性を入力しています。
javascript - AJAXリクエストの完了後にPartialViewで定義されたJavaScript関数を呼び出しますか?
これが私の部分的な見解です:
フォームを送信して応答を受け取ると、JavaScriptエラーが発生します。
c# - 複雑なデータ型のフォームをコントローラーに送信する
これは私のモデルです
モデル
コントローラ
コントローラーに送信する MVC を使用したフォーム
オブジェクト XViewModel を作成してコントローラーに戻す方法を教えてください。私はそれらを3つの異なる変数に入れています。これをやろうとしました dataString = { XPersonList:xpersonContent, XContent: xContent, CommentEnabled: true }; しかし、それは機能していません..