2012-01-08 7 views
1

에 마스터 레이아웃이있는보기에서 메타 태그를 만들 수 있습니까? 내 의견 중 하나에서 소셜 플러그인을위한 메타 태그를 만들어야하지만 그렇게 할 방법을 찾지 못했습니다.asp.net mvc

메타 태그는이보기에만 해당하므로 마스터 레이아웃으로 코딩 한 다음보기에서 값을 설정하는 것이 옳지 않은 것처럼 보입니다.

mater-layout의 헤드 섹션에 추가 할 수있는보기에서 메타 태그를 만들 수있는 방법이 있습니까? 또는 마스터 레이아웃에 추가 한 다음 설명 및 키워드처럼 값을 설정해야합니다.

+0

을 (AN if(ViewBag.Metadescription != null) 검사를하거나 할) 모든 부분에서이 ViewBag 값을 만들 필요가 일부 도움이 답변을 여기에서 찾을 수 있다는 것입니다 : http://stackoverflow.com/questions/5531271/ 면도기 - 엔진 - SEO 메타 태그. – Oliver

답변

7

razor sections으로이를 수행 할 수 있습니다. 뷰 특정 스크립트 및 CSS에서는이 작업을 수행하지만 메타 태그에도 패턴을 적용 할 수 있습니다.

<head> 
    <meta (global meta tag) ../> 
    @if (IsSectionDefined("HeadMeta")) 
    { 
     @RenderSection("HeadMeta") 
    } 
</head> 

부분보기에서 : 레이아웃에서

@section HeadMeta 
{ 
    <meta (view-specific social meta tag) ../> 
} 
+3

첫 번째 코드 샘플을'@RenderSection ("HeadMeta", required : false)'로 단축 할 수 있습니다. – Oliver

1

당신이 할 수있는 유일한 방법은 설명과 키워드에 사용하는 것과 동일한 접근 방식을 사용하는 것입니다. 그리고 나서 마스터 레이아웃에서 코딩 한 다음보기에서 값을 설정하는 것은 괜찮습니다. 왜냐하면 그 위치가 실제로 레이아웃에 있고 그 값은 표시된보기에 따라 달라지기 때문입니다.

+0

실제로 그들은 다른보기에서 사용되지 않을 것입니다. 그래서 나는 그들이 의미하는보기에 메타 태그를 만드는 방법이있을 것이라고 생각했습니다 .-P ... 어쨌든 덕분에 ....) –

1

은 또한 마스터 레이아웃에서 ViewBag

를 사용할 수 있습니다

<meta name="description" content="@ViewBag.MetaDescription" /> 

당신의 부분에서 :

@{ 
ViewBag.MetaDescription = "My meta description string"; 
} 

단점은