cis*_*ert 9 asp.net-mvc master-pages
我在过去几天玩ASP.NET MVC并且能够构建一个小站点.一切都很好.
现在,我需要通过ViewData传递页面的META标签(标题,描述,关键字等).(我正在使用母版页).
你是如何处理这个的?先感谢您.
Ric*_*cky 20
这是我目前正在做的...
在母版页中,我有一个内容占位符,其中包含默认标题,说明和关键字:
<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>
Run Code Online (Sandbox Code Playgroud)
然后在页面中,您可以覆盖所有这些内容:
<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>
Run Code Online (Sandbox Code Playgroud)
这应该可以让您了解如何设置它.现在,您可以将此信息放在ViewData(ViewData ["PageTitle"])中,或将其包含在您的模型中(ViewData.Model.MetaDescription - 对博客文章等有意义)并使其成为数据驱动的.
Cha*_*ino 13
把它放在你的viewdata中!做类似以下的事......
BaseViewData.cs - 这是一个所有其他viewdata类将继承的viewdata类
public class BaseViewData
{
public string Title { get; set; }
public string MetaKeywords { get; set; }
public string MetaDescription { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后,您的Site.Master(或其他)类应定义如下:
public partial class Site : System.Web.Mvc.ViewMasterPage<BaseViewData>
{
}
Run Code Online (Sandbox Code Playgroud)
现在在您的Site.Master页面中
<title><%=ViewData.Model.Title %></title>
<meta name="keywords" content="<%=ViewData.Model.MetaKeywords %>" />
<meta name="description" content="<%=ViewData.Model.MetaDescription %>" />
Run Code Online (Sandbox Code Playgroud)
你笑了!
HTHs,查尔斯
PS.然后,您可以扩展这个想法,例如将一个getter到User(IPrincipal)类放入一个LoggedInBaseViewData类.
| 归档时间: |
|
| 查看次数: |
7089 次 |
| 最近记录: |