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 앞에 “../”를 넣으십시오.
이것이 제가 오늘받는 두 가지 문제이며, 저는 그렇게 해결합니다!
문안 인사;
답변
뷰가 레이아웃을 사용해야하는지 여부를 결정하는 논리_viewStart
는 View
. 기본값을 설정하는 _viewStart
것은 좋지만 view / viewstart에 레이아웃 로직을 추가하면 해당 뷰가 다른 곳에서 (레이아웃 유무에 관계없이) 사용되지 않습니다.
컨트롤러 작업은 다음과 같아야합니다.
return PartialView()
이러한 유형의 논리를 뷰에 배치하면 M (데이터), V (시각적), C (로직) 의 단일 책임 원칙 규칙 을 위반하게 됩니다.
답변
사용하다:
@{
Layout = null;
}
_ViewStart에 지정된 레이아웃을 제거합니다.
답변
레이아웃 파일이 사용되지 않도록 뷰를 부분 뷰로 생성하기 만하면됩니다.