MVC の組み込みの AJAX ヘルパーを使用できます。ざっくり以下の通り…
いくつかの AJAX オプションを宣言します。
@{
AjaxOptions ajaxOpts = new AjaxOptions { UpdateTargetId = "target" };
}
次に、AJAX BeginForm メソッドを使用してフォームを宣言します。
@using (Ajax.BeginForm("GetData", ajaxOpts))
{
@* Here you put your form data. I'm guessing your popup could just be a DIV that gets positioned and made visible *@
}
AJAX リクエストが戻ってきたときに更新するターゲットは、単純な DIV になります。
<div id="target">
@* The output of your GetData controller method will end up here *@
@Html.Action("GetData", new { model = Model })
</div>
次に、コントローラーに、データを含む PartialView を返すものがあります。
public PartialViewResult GetData(ViewModel model)
{
// Do some stuff here to fetch some data
// ViewModel will be whatever your view model is called
return this.PartialView("GetData", model);
}
これが、AJAX を機能させるための基本です。ブラウザに送り返される HTML を取得して、ページのさまざまな部分を更新する場合は、AjaxOptions の OnComplete 引数に関数を指定して、AJAX ヘルパーが呼び出す jQuery 関数を追加する必要があります。
部分ビューのデータには、ブラウザーの別の場所に移動できる HTML の隠しチャンクが含まれている場合があります。
残念ながら、MVC AJAX ヘルパーは 1 つの UpdateTargetId しかサポートしていません。
編集して追加
Web 構成ファイルの appSettings でこれを設定する必要があります。
<add key="UnobtrusiveJavaScriptEnabled" value="true"/>
また、HTML 出力に jQuery 拡張機能を含める必要があります (おそらく _Layout.cshtml ファイルに?)。
<script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>