[asp.net-mvc] 레이아웃이없는 Razor보기

Layout = null;내 뷰에 있을 때 어떻게 -여전히 기본 레이아웃을 가져옵니다?!

그것을 막을 수있는 트릭이 있습니까?

레이아웃이없는 내보기는 다음과 같습니다.

@{
    Layout = "";
}

<!DOCTYPE html>

<html>
<head>
    <title>Index</title>
    @{Html.RenderAction("Head", "Header");}
</head>
<body>
    <div>
        Home
    </div>
</body>
</html>

다음은 렌더링 된 출력입니다 !!

<!DOCTYPE html>

<html>
<head>
    <title>Index</title>
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
    <link href="/Content/Site.css" rel="stylesheet" type="text/css" />
    <script src="/Scripts/jquery-1.5.1.min.js" type="text/javascript"></script>
    <script src="/Scripts/modernizr-1.7.min.js" type="text/javascript"></script>
</head>

<body>
    header
</body>
</html>
</head>
<body>
    <div>
        Home
    </div>
</body>
</html>



답변

당신은 가지고 있습니까 _ViewStart.cshtml이 디렉토리를? _ViewStart를 사용하려고 할 때와 동일한 문제가 발생했습니다. 그런 다음 이름을 _mydefaultview로 변경하고 Views/Shared디렉터리 로 이동 한 다음 원하지 않는 cshtml 파일에보기를 지정하지 않고 나머지는 _mydefaultview를 지정하는 것으로 전환했습니다. 이것이 왜 필요한지 모르지만 효과가있었습니다.


답변

나는 이것을 생각 해요 :

@{
    Layout = "";
 }

다음과 같지 않습니다.

@{
    Layout = null;
 }

두 번째를 사용하고 작동하며 _Viewstart가 포함되어 있지 않습니다.


답변

당신 (그리고 KMulligan)은 _ViewStart페이지를 오해하고 있습니다.

_ViewStart것입니다 항상 페이지가 시작되기 전에 실행합니다.
속성 (예 :)을 초기화하는 데 사용됩니다 Layout. 일반적으로 마크 업을 포함해서는 안됩니다. (재정의 할 방법이 없기 때문에).

올바른 패턴은를 호출하는 별도의 레이아웃 페이지를 만들고 에서이 페이지를 가리 키도록 속성을 RenderBody설정하는 것 Layout입니다 _ViewStart.

그런 다음 Layout콘텐츠 페이지 를 변경할 수 있으며 변경 사항이 적용됩니다.


답변

나는 그것이 개별 “보기”로 작업하는 것이 더 낫다고 생각한다. 나는 PHP에서 MVC4로 옮기려고 노력하고있다. 정말 힘들지만 올바른 길을 가고있다.

질문에 답하고 개별 페이지를 작업하려면 _ViewStart.cshtml

@{
  Layout = null;
}

CSS 경로에 문제가있는 경우 또 다른 팁 …

URL 앞에 “../”를 넣으십시오.

이것이 제가 오늘받는 두 가지 문제이며, 저는 그렇게 해결합니다!

문안 인사;


답변

뷰가 레이아웃을 사용해야하는지 여부를 결정하는 논리_viewStartView. 기본값을 설정하는 _viewStart것은 좋지만 view / viewstart에 레이아웃 로직을 추가하면 해당 뷰가 다른 곳에서 (레이아웃 유무에 관계없이) 사용되지 않습니다.

컨트롤러 작업은 다음과 같아야합니다.

return PartialView()

이러한 유형의 논리를 뷰에 배치하면 M (데이터), V (시각적), C (로직) 의 단일 책임 원칙 규칙 을 위반하게 됩니다.


답변

사용하다:

@{
    Layout = null;
 }

_ViewStart에 지정된 레이아웃을 제거합니다.


답변

레이아웃 파일이 사용되지 않도록 뷰를 부분 뷰로 생성하기 만하면됩니다.