私は Web アプリ開発に非常に慣れていないので、最近のテクノロジから始めようと思っていたので、asp.net と MVC フレームワークを一度に学ぼうとしています。これは、MVC の専門家である皆さんにとって、おそらく非常に単純な質問です。
私の質問は、部分ビューに関連付けられたアクションが必要です。もしそうなら、通常のページRenderPartial()
が部分ビューで使用するたびに、このアクションが呼び出されますか?
私は Web アプリ開発に非常に慣れていないので、最近のテクノロジから始めようと思っていたので、asp.net と MVC フレームワークを一度に学ぼうとしています。これは、MVC の専門家である皆さんにとって、おそらく非常に単純な質問です。
私の質問は、部分ビューに関連付けられたアクションが必要です。もしそうなら、通常のページRenderPartial()
が部分ビューで使用するたびに、このアクションが呼び出されますか?
部分ビューを返すアクションを作成できますが、部分ビューをレンダリングするアクションは必要ありません。RenderPartial は、部分ビューを受け取り、指定されたモデルとビュー データ (提供されている場合) を使用して、現在の (親) ビューにレンダリングします。
ページの一部をロード/リロードするために AJAX を使用している場合、部分ビューを返すアクションが必要になることがあります。その場合、ページの一部のみをリロードする必要があるため、完全なビューを返すことは望ましくありません。この場合、ページのそのセクションに対応する部分ビューだけをアクションに返すようにできます。
標準機構
通常のビュー内で部分ビューを使用する (アクションは必要ありません)
...some html...
<% Html.RenderPartial( "Partial", Model.PartialModel ); %>
...more html..
Ajax の仕組み
AJAX 経由でページの一部をリロードする (最初のページ読み込みで部分的にインラインでレンダリングされることに注意してください)
...some html...
<div id="partial">
<% Html.RenderPartial( "Partial", Model.PartialModel ); %>
</div>
...more html...
<script type="text/javascript">
$(function() {
$('#someButton').click( function() {
$.ajax({
url: '/controller/action',
data: ...some data for action...,
dataType: 'html',
success: function(data) {
$('#partial').html(data);
},
...
});
});
});
</script>
AJAX のコントローラー
public ActionResult Action(...)
{
var model = ...
...
if (Request.IsAjaxRequest())
{
return PartialView( "Partial", model.PartialModel );
}
else
{
return View( model );
}
}