多くのゲストの追加を処理するには、jQuery ajax を使用します。
1) モデル ポップアップを使用 [ゲストの追加] ボタンをクリックすると、モデル ダイアログで m のゲストを返すアクション メソッドが呼び出されます (jQuery UI ダイアログは、ここで使用するオプションの 1 つです)。ajax post 呼び出しを使用してデータを保存します。成功イベントの 1 つで、新しいゲスト データをゲストのメイン フォーム リストに追加するか、jquery ロードのみを使用してその部分をリロードします
2) ページ内追加[ゲストの追加] ボタンをクリックすると、メイン フォーム自体にフォームが表示されます (さまざまな方法で JavaScript から入力ボックスと保存ボタンを動的に作成できます)。jQuery ajax post を使用してデータを保存します。データを json として送信します。パラメーター名が ViewModel のプロパティ名と一致する限り、アクション メソッドはデータを受け入れることができます。
あなたの HTML ページ
<a href="#" id="addNew"> Add Guest</a>
<div id="divForm" style="display:none">
<input type="text" id="txtName" />
<input type="text" id="txtEmail" />
<input type="button" id="btnSaveGuest" value="Save"/>
</div>
<ul>
<div id="divGuests"></div>
あなたのスクリプトで
$(function(){
//Show the hidden form
$("#addNew").click(function(){
$("#divForm").fadeIn(300);
});
//Save the new guest details
$("#btnSaveGuest").click(function() {
var name=$("#txtName").val();
var email=$("#txtEmail").val();
$.ajax({
url: '@Url.Action("SaveGuest","Guest")',
data: {Name: name, EmailAddress :email},
success: function(data) {
if(data=="true")
{
//Saved successfully.May be append to list of Guest
$("#divGuests").append("<p>"+name+"</p>");
}
else
{
//Error. Show msg to user
}
}
});
});
});
保存するアクション メソッド
[HttpPost]
public ActionResult SaveGuest(Guest objGuest)
{
try
{
// read the objGuest property values and Save to db
return "true";
}
catch(Exception e)
{
//Log error
return "false";
}
}
サンプル アプリは次のとおりです: http://jsfiddle.net/Qzk3F/16/
(例では一部の値がハードコーディングされています)