在<head>标签中动态添加<link rel="canonical">的方法

4
我需要基于所加载的页面动态向 head 标签添加 link rel 标签。是否可以使用 page.header.controls.add 方法来实现?还是只能通过 JavaScript 或 jQuery 实现?非常感谢您的帮助。

最好使用您喜欢的任何CGI编程语言在服务器端完成此操作。在这种情况下,您将使用ASP。 - Rafael
谢谢回复,我是新手,请您能详细解释一下吗?非常感谢。 - Mani
1
我认为最好使用服务器端来处理这个问题,因为如果用户发出请求,您希望服务器在用户获得输出之前处理它。在我看来,这更适合在服务器语言中完成。 - Rafael
3个回答

3
您可以使用 HtmlGenericControl 类来实现这个功能:-
HtmlGenericControl linkFile = new HtmlGenericControl("link");
linkFile.Attributes.Add("rel", "canonical");
linkFile.Attributes.Add("href", "testPath");
Page.Header.Controls.Add(linkFile);

谢谢,我之前也尝试过这个,但在页面源代码中找不到链接标签,我是不是漏掉了什么? - Mani
我把这个添加到了母版页的代码后端,我做错了吗? - Mani
奇怪!你是如何验证它是否已添加?检查页面源代码。 - Rahul Singh
检查了页面源代码 - 也使用了以下代码: HtmlLink clink = new HtmlLink(); clink.Attributes.Add(HtmlTextWriterAttribute.Rel.ToString().ToLower(), "canonical"); clink.Href = "http://www.test.com/"; Page.Header.Controls.Add(clink); 但是没有起作用! - Mani
@Mani - 不用谢 :) 如果这个回答“帮到了你”,请接受它作为答案 :) - Rahul Singh
显示剩余3条评论

3

你可以尝试这个:

如果没有找到id为'id2'的元素,则创建一个link元素,并将其添加到head标签中。link元素的id为'id2',rel属性为'stylesheet',href属性为'CSS/Css1.cs'。


上面的代码没有添加link rel="canonical" - 我建议你测试一下这种情况,以防行为不同。 - qxotk

0
我们也可以使用这个:
 HtmlLink clink = new HtmlLink();
    clink.Attributes.Add( HtmlTextWriterAttribute.Rel.ToString().ToLower(), "canonical");
    clink.Href = "http://www.test.co.in/";
    Page.Header.Controls.Add(clink);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接