asp.net内联代码中的动态<title>标记</title>

时间:2012-11-21 11:51:27

标签: asp.net inline-code

我有一个奇怪的问题,我正试图找出如何绕过。基本上,我工作的公司使用CMS,它只允许ASP.net的内联代码,并使用“样式”系统来执行诸如页眉/页脚之类的操作。

现在我遇到的问题是在显示课程信息的某个页面上,我们有一些asp.net代码根据上一个链接页面IE中的因素生成页面一个课程搜索页面然后带你到课程你选择了。

现在我们有了可怕的搜索引擎优化,我需要能够根据课程搜索中的选择为页面动态创建标题/元标记。

问题在于SEO,我需要标题标签在标题中,但该页面的可识别信息来自asp.net代码,该代码从数据库中获取课程信息,这在页面主体中运行。

有没有办法让我在标题处获取信息或运行另一块asp.net代码来设置我需要的标签?

我道歉,如果这没有多大意义,但我们的CMS系统会让一切变得更加困难,但我无法删除它。

谢谢!

2 个答案:

答案 0 :(得分:3)

因此,如果我理解正确,您希望将<title><meta ...>标记添加到服务器端代码中的已呈现网页“<head>标记中吗?

如果您使用的是ASP.NET 2.0或更高版本,则可以通过在声明中添加<head>来更改服务器代码可访问的runat="server"元素。然后,您可以通过页面'Title属性设置标题值。

要添加<meta>代码,您需要运行ASP.NET 4.0,它会向Page对象添加MetaKeywordsMetaDescription属性。

所以要把这些放在一起,你的页面标记应该包括:

<% Page ... %>
<html>
    <head runat="server">
    ...
    </head>
    <body>
    ...

然后在您的服务器端代码中:

 Page.Title = "My course page";
 Page.MetaDescription = "My Page for Course x";
 Page.MetaKeywords = "course, education, learning";

然后应该显示为:

 <html>
     <head>
         <title>My course page</title>
         <meta name="description" content="My Page for Course X" />
         <meta name="keywords" content="course, education, learning" />
 ....

答案 1 :(得分:0)

将占位符放在head标记中,并使用下面的代码从代码后面添加meta标记。

HtmlMeta meta = new HtmlMeta();
meta.Attributes.Add("property", "og:title");
meta.Attributes.Add("content", lblBannerTitle.Text.Length > 68 ? lblBannerTitle.Text.Substring(0, 68) : lblBannerTitle.Text);
MetaPlaceHolder.Controls.Add(meta);

这样,您可以拥有任意数量的元标记。 只需确保标题元标记最大长度为68,描述元标记最大长度为148。

让我知道它是否与您的案件有关。