MVCではHtmlを用いる.RenderPartialかHtmlか.RenderActionまたはHtml.Partial-Xia.CJ
3861 ワード
Asp.Net MVCではRazorビューエンジンを使用していますが、あなたはまだではありませんか?....
Asp.Net MVCにはこの3つのHtmlHelperの拡張方法がある
Html.Partial:ビューの内容を直接文字列を生成して返します.
Html.RenderPartialメソッドは現在のHttpContextに直接出力し、
そしてHtml.RenderActionはActionも呼び出します.Controller→Model→Viewの順序をもう一度実行します.
したがって、ビューでの使用方法は異なります.
Partialは@Html.Partial(「Index」)のように、末尾にセミコロンはありません.
ここでRenderPartialでは、RenderActionメソッドは文字列を返すのではなく、呼び出しビューテンプレートの出力ストリームにコンテンツを直接出力します.
そしてHtml.RenderActionは具体的なactionを呼び出すとき、主actionのmethodと関係があります.
メインactionはgetで、彼もgetで、メインmethodはpostで、彼もpostを調整します.
以下はhttp://www.cnblogs.com/tianyaxiang/archive/2011/12/11/RenderPartial-RenderAction.htmlから
Html.RenderPartialはAspにいます.NetMvcではPartialViewを呼び出すために使用されます.PartialViewは基本的にAspです.NetWebformのUserControl.呼び出しも簡単で、ビューでPartialViewの名前をパラメータとして渡せばOKです.例:
Html.RenderActionでは、アクションを直接呼び出し、現在の呼び出しのViewに返された結果を直接表示できます.例:
RenderPartialおよびRenderActionは、通常、メニューやナビゲーションバーなどの機能が相対的に独立した「ブロック」を表示するために使用されます.両方の出力結果が呼び出しのViewの一部として表示されます.
RenderPatialのデータは呼び出したViewから来ており、RenderActionは自分から来ている.RenderActionは新しいRequestを開始しますが、RenderPatialは開始しません.
2つの異なる点のうちの2番目の点によっては、RenderActionが新しいActionメソッドを呼び出すので、Asp.NetMvcではActionが最小のキャッシュ単位であるため、ある「ブロック」のデータが比較的固定されており、訪問者によって変化しない場合は、その場合はRenderActionを使用する時である.余談ですが、RenderActionに対して新しいRequestが発起され、呼び出しページの流れが少し壊れているような気がします.あるViewが表示されると、自分でRequestを起動してデータを取得して表示します.明らかにViewとしての原則を破壊しています.
A View should only know how to render, but not what to render!
Asp.Net MVCにはこの3つのHtmlHelperの拡張方法がある
Html.Partial:ビューの内容を直接文字列を生成して返します.
Html.RenderPartialメソッドは現在のHttpContextに直接出力し、
そしてHtml.RenderActionはActionも呼び出します.Controller→Model→Viewの順序をもう一度実行します.
したがって、ビューでの使用方法は異なります.
@
{
Html.RenderPartial("Index");
}
@
{
Html.RenderAction("Index");
}
@Html.Partial("Index") //( )
注意:RenderPartial、RenderActionコードフォーマット、末尾にセミコロンがあります.Partialは@Html.Partial(「Index」)のように、末尾にセミコロンはありません.
ここでRenderPartialでは、RenderActionメソッドは文字列を返すのではなく、呼び出しビューテンプレートの出力ストリームにコンテンツを直接出力します.
そしてHtml.RenderActionは具体的なactionを呼び出すとき、主actionのmethodと関係があります.
メインactionはgetで、彼もgetで、メインmethodはpostで、彼もpostを調整します.
以下はhttp://www.cnblogs.com/tianyaxiang/archive/2011/12/11/RenderPartial-RenderAction.htmlから
What is Html.RenderPartial
Html.RenderPartialはAspにいます.NetMvcではPartialViewを呼び出すために使用されます.PartialViewは基本的にAspです.NetWebformのUserControl.呼び出しも簡単で、ビューでPartialViewの名前をパラメータとして渡せばOKです.例:
<% Html.RenderPartial("YourPartialView", YourData); %>
YourDataはオプションのパラメータです.ある場合、YourDataはPartialViewのModelに割り当てられます.ない場合は、RenderPartialを呼び出すViewのModeとViewDataがPartialViewに渡されます.つまり、PartialViewのデータは呼び出したViewから来ています.What is Html.RenderAction
Html.RenderActionでは、アクションを直接呼び出し、現在の呼び出しのViewに返された結果を直接表示できます.例:
<% Html.RenderAction("Show", "Tag"); %>
TagControllerのShowメソッドが呼び出されます.このとき呼び出されるのはActionメソッドなので、データベース、ファイルなどからデータを取得したり、データを書いたりして結果を返すなど、やりたい操作を完了することができます.[OutputCache(Duration=6000)]
public
ActionResult Show()
{
var tagData =
null
;
//Get data from database
//tagData = tagService.AllHot();
return
PartialView(
"TagCloud"
, tagData);
}
TagCloudは簡単なPartialViewファイルです.両者の同一点
RenderPartialおよびRenderActionは、通常、メニューやナビゲーションバーなどの機能が相対的に独立した「ブロック」を表示するために使用されます.両方の出力結果が呼び出しのViewの一部として表示されます.
両者の相違点
RenderPatialのデータは呼び出したViewから来ており、RenderActionは自分から来ている.RenderActionは新しいRequestを開始しますが、RenderPatialは開始しません.
選択方法
2つの異なる点のうちの2番目の点によっては、RenderActionが新しいActionメソッドを呼び出すので、Asp.NetMvcではActionが最小のキャッシュ単位であるため、ある「ブロック」のデータが比較的固定されており、訪問者によって変化しない場合は、その場合はRenderActionを使用する時である.余談ですが、RenderActionに対して新しいRequestが発起され、呼び出しページの流れが少し壊れているような気がします.あるViewが表示されると、自分でRequestを起動してデータを取得して表示します.明らかにViewとしての原則を破壊しています.
A View should only know how to render, but not what to render!