いくつかの基本的なコントローラーアクションから始めましょう:
public class FeiertagController
{
IFeiertagService feiertagService = new FeiertagService();
public ActionResult EditFeiertag()
{
// ... return your main edit view
return View();
}
// Will be called by your jquery ajax call
public PartialResult GetFeiertagTable()
{
var feiertagData = messageService.getLatestFeiertagData();
var viewModel = new FeiertagViewModel();
feiertagViewModel.feirtagTableData = feiertagData;
return PartialView("FeiertagTableView", viewModel);
}
}
したがって、EditFeiertag()を使用して編集ページ全体をレンダリングし、そのページが部分ビューを非同期でレンダリングする場合は、GetFeiertagTable()を呼び出します。
さて、あなたの見解では、あなたが次のようなものを持っているとしましょう:
<div id="Container">
<div id="LeftPanel">
// ... Some menu items
</div>
<div id="RightPanel">
<a id="ReloadLink" href="#">Reload Table</a>
<div id="FeiertagTable>
<% Html.RenderPartial("FeiertagTable", Model.feiertagTableData); %>
</div>
</div>
</div>
これは正常に機能し、テーブルを1回ロードします。ただし、特定の要素(この場合は#ReloadLink)をクリックすると、Feiertagテーブルをリロードする必要があります。
ページの一部に以下を追加します。
<head>
<script src="../../Scripts/Jquery/jquery-1.3.2.min.js" type="text/javascript"></script>
<script type="text/javascript">
jQuery(document).ready(function($) {
$('#ReloadLink').click(function(e)
{
e.preventDefault(); // stop the links default behavior
$('#FeiertagTable').load('/Feiertag/GetFeiertagTable');
});
});
</script>
</head>
次に、jquery load()メソッドを呼び出すリロードリンクのクリックイベントにイベントを追加します。このメソッドは単純化されたajaxgetリクエストであり、選択したdiv(FeiertagTable)の内容を返されるものに置き換えます。
GetFeiertagTable()コントローラーアクションは部分ビューを返し、それがそのdivに挿入されます。
これがあなたを正しい方向に向けさせてくれることを願っています!