如何在 ASP.NET MVC 中传递页面的元标记?

发布于 2024-07-06 11:01:21 字数 151 浏览 6 评论 0原文

最近几天我一直在使用 ASP.NET MVC,并且能够构建一个小型网站。 一切都很好。

现在,我需要通过 ViewData 传递页面的 META 标记(标题、描述、关键字等)。 (我正在使用母版页)。

你是怎么处理这件事的? 先感谢您。

I'm playing with ASP.NET MVC for the last few days and was able to build a small site. Everything works great.

Now, I need to pass the page's META tags (title, description, keywords, etc.) via the ViewData. (i'm using a master page).

How you're dealing with this? Thank you in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

寄人书 2024-07-13 11:01:21

这是我目前正在做的...

在母版页中,我有一个带有默认标题、描述和关键字的内容占位符:

<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 - 对于博客文章等有意义)并使其成为数据驱动的。

Here is how I am currently doing it...

In the masterpage, I have a content place holder with a default title, description and keywords:

<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>

And then in the page, you can override all this content:

<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>

This should give you an idea on how to set it up. Now you can put this information in your ViewData (ViewData["PageTitle"]) or include it in your model (ViewData.Model.MetaDescription - would make sense for blog posts, etc) and make it data driven.

旧城烟雨 2024-07-13 11:01:21

将其放入您的视图数据中! 执行类似以下操作...

BaseViewData.cs - 这是一个所有其他 viewdata 类都将继承的 viewdata 类

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 %>" />

而你却笑了!

HTH,
查尔斯

·诗篇。 然后您可以扩展这个想法,例如将 User (IPrincipal) 类的 getter 放入 LoggedInBaseViewData 类中。

Put it in your viewdata! Do something like the following...

BaseViewData.cs - this is a viewdata class that all other viewdata classes will inherit from

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

Then your Site.Master (or whatever) class should be defined as follows:

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

Now in your Site.Master page simply have

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

And you're away laughing!

HTHs,
Charles

Ps. You can then expand on this idea, e.g. put a getter to your User (IPrincipal) Class into a LoggedInBaseViewData class.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文