ASP.Net MVCレイアウトページ、テンプレートページの使い方の詳細

4298 ワード

一、Viewsフォルダ->Sharedフォルダの下の_Layout.cshtmlマスターページ
@RenderBody
作成基準_Layout.cshtmlレイアウトページのビューでは、ビューの内容がレイアウトページに結合され、新しく作成されたビューの内容が_Layout.cshtmlレイアウトページの@RenderBody()メソッドがラベル間に表示されます.
@RenderPage名前からこの方法はページを表示することであると推測できます.例えば、ページに固定されたヘッダは、共有されたビューファイルに単独で配置され、レイアウトページでこの方法で呼び出されます.@RenderPage(「~/Views/Shared/_Header.cshtml」)パラメータ付き@RenderPage(「~/Views/Shared/_Header.cshtml」、new{parm=「my」、parm 2=「you」)呼び出しページ取得パラメータ://RenderPage()から渡されたパラメータを取得@PageData["param"]
@RenderSection
レイアウトページにはセクション(Section)の概念もあります.つまり、ビューテンプレートにセクションが定義されている場合は、セクションが欠けているために例外が発生しないように個別に表示することができます.RenderSection()には、@RenderSection("head",false)または@if(IsSectionDefined("head"){@RenderSection("head",false)}else{SubMenu Section is not defined!        }
コードは次のとおりです.

 
 
 
  @ViewBag.Title 
   
   
  @RenderSection("head", required: true)@*View       js/css  *@ 
 
 
 
  @RenderPage("~/Views/Shared/_Header.cshtml") 
  @RenderBody() 
 
 

、ビューの 、マスターページの
コードは のとおりです.

@{ 
  ViewBag.Title = "Index"; 
  Layout = "~/Views/Shared/_Layout.cshtml"; 
} 

Index

@section Head{ $(function () { alert("hello jquery"); }); }

C#


@DateTime.Now.Date.ToShortDateString()

C#

@{ List list = new List { "Mvc3", "Razor" }; list.Add(".Net4"); }
    @foreach(string s in list) { if (string.IsNullOrEmpty(s)) {
  • } else {
  • @s
  • } }

三、ページのソースコードを生成する




  Index
  
  
  
  
    $(function () {
      alert("hello jquery");
    });
  




  

Index

C#


2013/3/11

C#

  • Mvc3
  • Razor
  • .Net4
  • 四、@Html.Partial
    Partialは毎回独自のTextWriterインスタンスを作成し、コンテンツをメモリにキャッシュする.最後にすべてのwriter出力の内容を1つのMvcStringオブジェクトに送信する場合、私たちは@{Html.RenderPartial(「Details」)を使用します.@HtmlではありませんPartial
    Html.RenderPartial()と@Html.Partialの違い
    Html.RenderPartialは現在のHttpContextに直接出力します(直接出力なので性能は良いです).
    Html.Partialは、ビューの内容を直接文字列を生成して返します(エスケープされたプロセスに相当します).
    RenderPage()とRenderPartial()の違い
    RenderPage()によって呼び出されたページは、過去に渡されたデータのみを使用できます.一方,RenderPartial()はviewdata,modelなどのデータを用いることができる.
    例:@{Html.RenderPartial("BasicChart",model);}このリロードでは、一部のビューで強いタイプを使用し、メインビューで2番目のパラメータを使用してモデルを転送できます.
    @{Html.RenderPartial("BasicChart",ViewData["myData"]);}
    Html.RenderPartialとHtml.RenderActionの違い
    Html.RenderPartialは、再利用されるUserControlに適しており、Modelを介してコンテンツを表示するだけで、広告のUserControlにも適しています.
    Html.Render ActionではまずControllerのActionメソッドを呼び出しますが、このUserControlがリポジトリを通して取得した資料を提示する必要がある場合(Actionを通してリポジトリを読み取る)、この方法が適しています.
    補足:
    1.Render付きメソッド戻り値はvoidであり、メソッド内部で出力する.持たない戻り値タイプはMvcHtmlStringなので、@Htmlしか使用できません.Partial対応@{Html.RenderPartial(.);}@Html.Action対応@{Html.RenderAction(.);}
    2、Html.Partialは、Htmlであるユーザコントロール名を直接パラメータとして提供することができる.Actionには対応するActionが必要であり、Action内部でPartailResult(すなわちretun PartialView())を返す.
    3、簡単な論理のないユーザーコントロールに対して、Htmlを使用することを推奨する.Partial;いくつかのModelを設定する必要があるユーザーコントロールについては、Htmlを使用することを推奨する.Action.もちろん、ModelデータがあるもHtmlを用いることができる.Partialメソッドの、メソッドの重荷を見ることができます.
    4、Htmlを使用する.Actionには、異なるシーンに基づいて異なるユーザーコントロールを選択できるというメリットがあります.
    例:@Html.Action(「UserInfoControl」)対応するUserInfoControlというActionでは、ユーザがログインしていないときにretun PartialView(「LogOnUserControl」)が可能である.ログイン後、retun PartialView(「UserInfoControl」);