2017-10-23 4 views
0

관리자 패널에는 하나의 테마를 사용하고 하나의 테마는 방문자를 표시하려는 별도의 테마입니다. 나는 방문객과 웹 사이트 운영자를위한 별도의 테마가 있어야한다고 말합니다. asp.net mvc에서 수행하는 방법? mvc에는 _Layout.cshtml 파일이 하나뿐이므로 여기서는 하나의 테마 만 첨부해야합니다.asp.net mvc에서 두 가지 테마 사용

답변

3

가 @RenderBody 전화 _AdminLayout 등과 같은 다른 이름으로 공유 폴더에 두 번째 레이아웃을 정의 관리자 레이아웃을 지정할 수 있습니다

@{ 
     ViewBag.Title = "View_Title"; 
     Layout = "~/Views/Shared/_AdminLayout.cshtml"; 
    } 
: 그것의 기능은 이제 뷰에서 레이아웃을 정의, 다양한 방법을 통해 레이아웃을 렌더링

1. 수

2. ActionResult의 렌더링 레이아웃 페이지 (컨트롤러를 사용. 보기 확장 방법) :

public ActionResult Action_Result_Name() 
    { 
     return View("Action_Result_Name","_AdminLayout"); 
    } 

3. _ViewStart.cshtml 페이지를 사용 : MVC 응용 프로그램의 기본 레이아웃 페이지를 정의하는 데 사용
_ViewStart.cshtml 페이지를 참조하십시오.

@{ 
    layout = "~/Views/Shared/_AdminLayout.cshtml"; 
} 

당신은 당신이뿐만 아니라

@{ 
    if (User.IsInRole("Admin")) 
    { 
     Layout = "~/Views/Shared/_AdminLayout.cshtml"; 
    } 
    else 
    { 
     Layout = "~/Views/Shared/_Layout.cshtml"; 
    } 
} 
+0

그것을 시도해 주셔서 감사합니다. –

+0

환영합니다 ... –

4

필요한만큼 레이아웃 파일을 만들 수 있습니다. 그래서 귀하의 경우, 자신의 레이아웃 페이지에 admin 테마 CSS 파일을 사용할 수있는 관리 영역을 만드는 것이 좋습니다.

Areas은 관련 기능과 해당 파일 (컨트롤러, 보기, 스타일, 코드 등). 영역은 큰 웹 응용 프로그램을 작은 기능 그룹으로 분할하는 방법을 제공합니다.

일반 방문자의 경우 해당 페이지 /보기는 기본 레이아웃을 사용하고 관리자 사용자의 경우 자신의 레이아웃이있는 관리 영역에서 렌더링 된보기를 가져옵니다. 관리 지역 (또는 심지어 _Viewstart.cshtml)에서보기를 들어

명시 적) (

@{ 
    Layout = "~/Views/Shared/_AdminLayout.cshtml"; 
} 
+0

조건에 기초가 좋지 않아 어떤 형제 레이아웃을 정의 할 수 있습니다 신원 프레임 워크를 사용하는 경우. 두 개의 테마가 연결되는 두 개의 _Layout.cshtml 파일이 있어야합니다. 방문자 테마 용 파일을 너무 많이 만들면 내 웹 사이트의 응답 속도가 느려질 수 있습니다. –

+3

@ Shyju의 대답은 최적의 접근 방식입니다. 이런 식으로 정확히 어떤 문제가 있습니까? 귀하의 의견은 명확하지 않습니다. –

+0

Yess Cris Pratt 당신이 바로 말하는 대답은 클리어 –