ASP.NET MVC에서 페이지의 메타 태그를 전달하는 방법은 무엇입니까?




asp.net-mvc master-pages (2)

지난 며칠 동안 ASP.NET MVC를 사용하고 있으며 소규모 사이트를 구축 할 수있었습니다. 모든 것이 훌륭하게 작동합니다.

이제 ViewData를 통해 페이지의 META 태그 (제목, 설명, 키워드 등)를 전달해야합니다. (나는 마스터 페이지를 사용하고있다).

이걸 어떻게 다루고 있니? 미리 감사드립니다.


그것을 당신의 viewdata에 넣으십시오! 다음과 같이하십시오.

BaseViewData.cs - 다른 모든 뷰 데이터 클래스가 상속하는 뷰 데이터 클래스입니다.

public class BaseViewData
{
    public string Title { get; set; }
    public string MetaKeywords { get; set; }
    public string MetaDescription { get; set; }
}

그런 다음 Site.Master (또는 무엇이든) 클래스를 다음과 같이 정의해야합니다.

public partial class Site : System.Web.Mvc.ViewMasterPage<BaseViewData>
{
}

이제 Site.Master 페이지에

<title><%=ViewData.Model.Title %></title>
<meta name="keywords" content="<%=ViewData.Model.MetaKeywords %>" />
<meta name="description" content="<%=ViewData.Model.MetaDescription %>" />

그리고 당신은 웃고 있어요!

HTHs, Charles

추신. 그런 다음 사용자 (IPrincipal) 클래스에 getter를 LoggedInBaseViewData 클래스에 넣는 등의 아이디어를 확장 할 수 있습니다.


여기 내가 현재하고있는 방법입니다 ...

마스터 페이지에는 기본 제목, 설명 및 키워드가있는 콘텐츠 위치 소유자가 있습니다.

<head>
<asp:ContentPlaceHolder ID="cphHead" runat="server">
    <title>Default Title</title>
    <meta name="description" content="Default Description" />
    <meta name="keywords" content="Default Keywords" />
</asp:ContentPlaceHolder>
</head>

그리고 페이지에서 다음 내용을 모두 무시할 수 있습니다.

<asp:Content ID="headContent" ContentPlaceHolderID="cphHead" runat="server">
    <title>Page Specific Title</title>
    <meta name="description" content="Page Specific Description" />
    <meta name="keywords" content="Page Specific Keywords" />
</asp:Content>

이 방법을 설정하는 방법에 대한 아이디어를 제공해야합니다. 이제이 정보를 ViewData (ViewData [ "PageTitle"])에 넣거나 모델에 포함시킬 수 있습니다 (ViewData.Model.MetaDescription - 블로그 게시물 등에 대해 의미가 있습니다).





master-pages