ASP.Net MVC 레이아웃 페이지,템 플 릿 페이지 사용 방법 상세 소개

1.뷰 폴 더->Shared 폴 더 아래Layout.cshtml 모판 페이지
@RenderBody
창설 기반Layout.cshtml 레이아웃 페이지 의 보 기 는 보기 의 내용 이 레이아웃 페이지 와 합 쳐 지고 새로 만 든 보기 의 내용 은Layout.cshtml 레이아웃 페이지 의@RenderBody()방법 은 탭 사이 에 나타 납 니 다.
@RenderPage
이름 에서 알 수 있 듯 이 이 방법 은 페이지 를 보 여 주 는 것 이다.예 를 들 어 웹 페이지 에 고정된 머리 는 공 유 된 보기 파일 에 따로 놓 은 다음 에 레이아웃 페이지 에서 이 방법 으로 호출 할 수 있 습 니 다.용법 은 다음 과 같 습 니 다.
@RenderPage(“~/Views/Shared/_Header.cshtml”)
매개 변수
@RenderPage(“~/Views/Shared/_Header.cshtml”,new{parm="my",parm2="you")
페이지 에서 인자 가 져 오기:
//RenderPage()가 전달 하 는 인자 가 져 오기
@PageData["param"]
@RenderSection
레이아웃 페이지 와 섹 션(Section)의 개념 이 있 습 니 다.즉,특정한 보기 템 플 릿 에서 하나의 절 을 정의 하면 단독으로 보 여줄 수 있 습 니 다.
절 부족 으로 인 한 이상 을 방지 하기 위해 RenderSection()에 두 번 째 인 자 를 제공 할 수 있 습 니 다.
@RenderSection("head", false)
혹시
@if (IsSectionDefined("head"))
        {
            @RenderSection("head", false)
        }
        else
        {
           

SubMenu Section is not defined!


        }
 코드 는 다음 과 같 습 니 다:

<!DOCTYPE html> 
<html> 
<head> 
  <title>@ViewBag.Title</title> 
  <link href="@Url.Content(" rel="external nofollow" ~/Content/Site.css")" rel="stylesheet" type="text/css" /> 
  <script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script> 
  @RenderSection("head", required: true)@*View       js/css  *@ 
</head> 
 
<body> 
  @RenderPage("~/Views/Shared/_Header.cshtml") 
  @RenderBody() 
</body> 
</html> 
2.보 기 를 만 들 고 모판 페이지 를 사용 합 니 다.
코드 는 다음 과 같 습 니 다:

@{ 
  ViewBag.Title = "Index"; 
  Layout = "~/Views/Shared/_Layout.cshtml"; 
} 
<h2>Index</h2> 
@section Head{ 
  <script type="text/javascript"> 
    $(function () { 
      alert("hello jquery"); 
    }); 
  </script> 
} 
<p>  C#    </p><br /> 
@DateTime.Now.Date.ToShortDateString() 
 
<p>  C#   </p> 
@{ 
  List<string> list = new List<string> { "Mvc3", "Razor" }; 
  list.Add(".Net4");   
} 
<ul> 
@foreach(string s in list) 
{ 
  if (string.IsNullOrEmpty(s)) 
  { 
    <li> </li> 
  } 
  else 
  {  
    <li>@s</li> 
  } 
} 
</ul> 
3.페이지 의 소스 코드 생 성

<!DOCTYPE html>
<html>
<head>
  <title>Index</title>
  <link href="/Content/Site.css" rel="external nofollow" rel="stylesheet" type="text/css" />
  <script src="/Scripts/jquery-1.4.4.min.js" type="text/javascript"></script>
  
  <script type="text/javascript">
    $(function () {
      alert("hello jquery");
    });
  </script>

</head>

<body>
  <h2>Index</h2>

<p>  C#    </p><br />
2013/3/11

<p>  C#   </p>
<ul>
    <li>Mvc3</li>
    <li>Razor</li>
    <li>.Net4</li>
</ul>

 

</body>
</html>
[email protected]
Partial 은 매번 자신의 TextWriter 인 스 턴 스 를 만 들 고 내용 을 메모리 에 캐 시 합 니 다.마지막 으로 모든 writer 가 출력 한 내용 을 MvcString 대상 에 보 냅 니 다.
@{Html.RenderPartial("Details")을 더 많이 사용 합 니 다.}@Html.Partial 이 아 닙 니 다.
Html.RenderPartial()과@Html.Partial 의 차이
Html.RenderPartial 은 현재 HttpContext 로 직접 출력 합 니 다(직접 출력 이기 때문에 성능 이 좋 습 니 다).
Html.Partial 은 보기 내용 을 문자열 로 직접 만 들 고 되 돌려 줍 니 다(전의 가 있 는 과정 에 해당 합 니 다).
RenderPage()와 RenderPartial()의 차이
RenderPage()호출 된 페이지 는 과거 데 이 터 를 전달 하 는 데 만 사용 할 수 있 습 니 다.
RenderPartial()은 viewdata,model 등 데 이 터 를 사용 할 수 있 습 니 다.
예:@{Html.RenderPartial("Basic Chart",model);}
이 리 셋 을 사용 하면 일부 보기에 서 강 한 형식 을 사용 한 다음 주 보기에 서 두 번 째 매개 변 수 를 사용 하여 model 에 전달 할 수 있 습 니 다.
@{Html.RenderPartial("BasicChart",ViewData["myData"]);}
Html.RenderPartial 과 Html.RenderAction 의 차이
Html.RenderPartial 은 중복 사용 에 적합 한 UserControl 이 며,Model 을 통 해 내용 을 보 여주 거나 광고 에 대한 UserControl 도 사용 하기에 적합 합 니 다.
Html.RenderAction 은 먼저 Controller 의 Action 방법 을 호출 합 니 다.만약 에 이 UserControl 이 데이터 라 이브 러 리 를 통 해 자 료 를 얻어 서 보 여 줘 야 한다 면(Action 을 통 해 데이터 라 이브 러 리 를 읽 는 것)이 방식 을 사용 하기에 적합 할 것 입 니 다.
보충:
1.Render 가 있 는 방법 반환 값 은 void 이 고 방법 내부 에서 출력 합 니 다.가지 고 있 지 않 은 반환 값 형식 은 MvcHtmlString 이기 때문에 이렇게 만 사용 할 수 있 습 니 다:
@Html.Partial 대응@{Html.RenderPartial(...);}
@Html.Action 대응@{Html.RenderAction(...);}
2.Html.Partial 은 사용자 컨트롤 이름 을 매개 변수 로 직접 제공 할 수 있 으 며,Html.Action 은 대응 하 는 Action 이 필요 하 며,Action 내부 에서 Partail Result(즉 retun PartialView()로 돌아 가 야 합 니 다.
3.간단 하고 논리 적 이지 않 은 사용자 컨트롤 에 대해 Html.Partial 을 사용 하 는 것 을 추천 합 니 다.Model 을 설정 해 야 하 는 사용자 컨트롤 에 대해 서 는 Html.Action 을 사용 하 는 것 을 추천 합 니 다.물론 Model 데이터 가 있 는 것 도 Html.Partial 방법 을 사용 할 수 있 고 방법 을 볼 수 있 습 니 다.
4.Html.Action 을 사용 하면 좋 은 점 이 있 습 니 다.즉,서로 다른 장면 에 따라 서로 다른 사용자 컨트롤 을 선택 할 수 있 습 니 다.
예 를 들 면:
@Html.Action("UserInfoControl")
대응 하 는 User InfoControl 이라는 Action 에서 사용자 가 로그 인하 지 않 았 을 때 retun PartialView("LogOn User Control")를 사용 할 수 있 습 니 다.로그 인 후 retun PartialView("User InfoControl")를 사용 할 수 있 습 니 다.

좋은 웹페이지 즐겨찾기