私は asp.net mvc を使用してアプリケーションを作成しています。アクションを持つコントローラーがあり、パラメーターとしていくつかの ViewModel を使用します。jQuery ポストを使用してフォーム データをその mvc コントローラーに送信する方法を教えてください。
ベストアンサー1
$.post("Yourcontroller/YourAction", { FirstName : $("#txtFirstName").val(), LastName : $("#txtLastName") } ,function(data){
//do whatever with the response
});
ViewModelのプロパティ名と渡すパラメータは同じである必要があります。つまり、ビューモデルにはFirstName
、LastName
次のように2つのプロパティが必要です。
public class PersonViewModel
{
public string FirstName { set;get;}
public string LastName { set;get;}
// other properties
}
そして、Postアクションメソッドは、次のタイプのパラメータを受け入れる必要があります。PersonViewModel
[HttpPost]
public ActionResult YourAction(PersonViewModel model)
{
//Now check model.FirstName
}
あるいは、ビューがPersonViewModelに強く型付けされている場合は、jQueryserialize
メソッドを使用してシリアル化されたフォームをアクションメソッドに送信するだけです。
$.post("Yourcontroller/YourAction", $("#formId").serialize() ,function(data){
//do whatever with the response
});
編集: コメント通り
Serialize
Childプロパティも処理します。次のようなProfessionというクラスがあるとします。
public class Profession
{
public string ProfessionName { set; get; }
}
そして、PersonViewModelには、型のプロパティがありますProfession
public class PersonViewModel
{
//other properties
public Profession Profession { set; get; }
public PersonViewModel()
{
if (Profession == null)
Profession = new Profession();
}
}
ビューからデータを入力すると、HttpPost アクション メソッドでこれらのデータが取得されます。