면도기보기에서 .css 파일을 참조하는 방법은 무엇입니까?


196

_Layout.cshtml 파일에서 .css 파일을 설정하는 방법을 알고 있지만 뷰별로 스타일 시트를 적용하는 것은 어떻습니까?

내 생각은 _Layout.cshtml에는 <head>태그가 있지만 레이아웃이 아닌 뷰 중 하나에서는 작동하지 않는다는 것입니다. 어디 않는 <link>태그 이동?

답변:


340

전체 사이트에서 재사용되는 CSS <head>의 경우 _Layout다음 섹션 에서 CSS를 정의합니다 .

<head>
    <link href="@Url.Content("~/Styles/main.css")" rel="stylesheet" type="text/css" />
    @RenderSection("Styles", false)
</head>

뷰 특정 스타일이 필요한 경우 Styles각 뷰 에서 섹션을 정의합니다 .

@section Styles {
    <link href="@Url.Content("~/Styles/view_specific_style.css")" rel="stylesheet" type="text/css" />
}

편집 : @RenderSection의 두 번째 매개 변수 인 false는이 마스터 페이지를 사용하는 뷰에서 섹션이 필요하지 않음을 의미하며 뷰 엔진은 정의 된 "스타일"섹션이 없다는 사실을 행복하게 무시합니다. 당신의 관점에서. true 인 경우, "스타일"섹션이 정의되어 있지 않으면 뷰가 렌더링되지 않고 오류가 발생합니다.


4
다시 생각하면, 그렇게 나쁘지는 않습니다. 나는 그것이 새롭고 다르다고 생각합니다.
MrBoJangles

@section Styles->는 Section Styles를 해결할 수 없다고 말합니다. 무슨 의미입니까?
Revious

2
@Sam은 레이아웃에 해당 섹션이 정의되어 있지 않음을 의미합니다.
Darin Dimitrov

@DarinDimitrov 헤더의 끝이 아닌 정확한 위치에 렌더링하는 방법이 있습니까? CSS 우선 순위에 대한 특정 순서를 유지하고 싶습니다.
Marc

@Marc RenderSection헤더의 끝이 아닌 (놀랍게도 :) 전화하는 곳에서 렌더링됩니다 .
David Ferenczy Rogožan

22

나는 다음과 같이 블록을 추가하려고 시도했다.

@section styles{
    <link rel="Stylesheet" href="@Href("~/Content/MyStyles.css")" />
}

_Layout.cshtml 파일의 해당 블록 :

<head>
<title>@ViewBag.Title</title>
@RenderSection("styles", false);
</head>

어느 작품! 그러나 나는 도울 수는 없지만 더 좋은 방법이 있다고 생각합니다. 업데이트 : @RenderSection문 에 "false" 가 추가되어 @section호출 된 추가를 무시해도 뷰가 흔들리지 않습니다 head.


섹션 이름을 지정하지만 더 좋은 방법은 없습니다 "Head".
SLaks

당신 말이 맞아요 "pageStyle"이라고 부르면 해당 목적만을위한 것입니다.
MrBoJangles

1
이렇게하면 모든보기에 "MyStyles"를 추가해야하며 Darins 답변을 사용하십시오.
Filip Ekberg

맞아. 그래서 내가 거짓 주장을에 추가했습니다 @RenderSection(). 잘 잡았습니다.
MrBoJangles



1

Client Dependency dll의 면도기 HTML 도우미를 사용하는 것을 선호합니다.

Html.RequireCss("yourfile", 9999); // 9999 is loading priority 

0

이 구조는 Layout.cshtml 파일에서 할 수 있습니다

<link href="~/YourCssFolder/YourCssStyle.css" rel="stylesheet" type="text/css" />

1
이렇게하면 뷰당 스타일 시트를 선택적으로 적용 할 수 있습니까?
MrBoJangles

각 섹션에 클래스 또는 ID를 추가 할 수도 있으며 헤더 내부에 mofidul에서 언급 한 스타일과 같은 스타일을 가질 수 있습니다. 내가하는 일은 sass로 작업하므로 각보기에는 별도의 클래스 컨테이너가 있습니다. 이런 식으로 각 섹션에 대해 sass 페이지를 만들었습니다.
Leo

rel = "stylesheet"의 의미는 무엇입니까?
Sven Krauter
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.