ASP.NET MVCアプリケーションのエンティティを更新するためのシンプルなフォームがあります。ユーザーがフォームを送信し、自分のコントローラー上の適切なアクションを呼び出して、ユーザーに更新が完了したことを通知できるようにします。ASP.NET MVCを使用して適切なアクションをフォームに送信
ユーザーが更新ボタンをクリックした後にJQueryダイアログを表示したかったので、JQueryを使用してフォームを送信したかったのです。しかし、私の問題はこれです:
私は簡単に私のコントローラ上のアクションを呼び出すためにJQueryを取得することができますが、私は自分のルートに既に設定したアクションを呼び出すことができず、例えば[Authorize]
と[AcceptVerbs(HttpVerbs.Post)]
、ユーザーは次のURLでそのエンティティを更新している場合:
/SomeController/Edit/5
jQueryのフォームを送信すると、私はすでに装飾され、受諾された私の編集アクションに提出したいですパラメータとしてのID。次のように私は、フォームを投稿するために使用しています
jQueryのは、次のとおりです。
$("#formFoo").submit(function() {
var frm = $("#formFoo");
var action = frm.attr("action");
var serializedForm = frm.serialize();
$.post(action, serializedForm, function() {
alert('Call completed');
});
return false;
});
次のように私は自分のフォームを定義する場合:
<form id="formFoo" action="/SomeController/SomeOtherAction" method="post">
、私の行動を次のように:
public void SomeOtherAction()
{
var myEntity=new MyEntity();
UpdateModel(myEntity);
}
私のアクションが呼び出され、オブジェクトには適切な値が設定されていますが、IDフィールドに値が設定されていないため、何がわかりませんエンティティを更新しています。
私は自分のフォームを変更した場合:
<form id="formFoo" action="/SomeController/Edit" method="post">
として、私は私の編集アクションが定義されています:
は[Authorize,AcceptVerbs(HttpVerbs.Post)]
public void Edit(int id, FormCollection collection)
その後、私の行動は決してjQueryので呼び出されていないようにみえます。
私は何とかクエリーストリングからIDパラメータを取り出して、フォームにポストバックしているデータにそのデータを埋め込むことができますが、それは非常に醜いようです。または、SomeOtherActionアクション中にIDフィールドを取得する方法はありますか?それとも私はこのすべてについて間違っているのだろうか?
$.post(action
を次に "アクション" の引数がIDを含める必要があります:あなたが呼び出す
私は、このようなまぬけです。もちろん!私は自分のフォームのAction属性にIDフィールドを追加するだけです。ヘッドアップをありがとう!私はそれを試み、それはうまくいった。 –