没有 href 属性的 Ajax.ActionLink 以获得更好的 SEO

Posted

技术标签:

【中文标题】没有 href 属性的 Ajax.ActionLink 以获得更好的 SEO【英文标题】:Ajax.ActionLink without href attribute for better SEO 【发布时间】:2011-10-18 15:49:20 【问题描述】:

我正在使用Ajax.ActionLink 显示一个超链接,并在单击时发出一个ajax 请求(例如本网站中的标志超链接、报告等)并将结果放入某个div 中,这一切都可以轻松完成方法,但是问题来自于 SEO,因为这个超链接实际上有 href 属性并且蜘蛛跟随 url。

我想要一个不带 href 的锚,使其对 SEO 友好,并使用扩展方法来完成所有这些工作,但要使用 Ajax.ActionLink 示例的所有重载:

Ajax.SEOFriendlyActionLink("my hyperlink", "action", "controller" ... more options)

这可以生成这样的东西

<a urlForAjax="url here">my hyperlink</a>

当然要进行 ajax 回调。

有这样的东西吗?

【问题讨论】:

【参考方案1】:

解决方法如下:

Ajax.ActionLink("我的超链接", "", "" ... new AjaxOptions() Url = Url.Action("action", "controller") ... )

它将生成如下内容:

【讨论】:

【参考方案2】:

@kyw 给出的解决方案很好,但有一个缺点。该链接可以在 newtab 中打开,这可能不是我们正在寻找的行为。

我们会稍微修改一下代码:

Ajax.ActionLink("my hyperlink", "", "" ... new AjaxOptions()  Url = Url.Action("action", "controller") ... , new  href = "!!")

现在我们需要一些 jQuery:

$('a[href$="!!"]').each(function (index, element) 
element.removeAttribute("href");
);

从现在开始,href 结束的每个链接!将删除此属性,因此它将禁用在新选项卡中打开链接的选项。

【讨论】:

以上是关于没有 href 属性的 Ajax.ActionLink 以获得更好的 SEO的主要内容,如果未能解决你的问题,请参考以下文章

为啥 a:hover 不能在没有 href 属性的锚上工作?

没有 href 属性的 Ajax.ActionLink 以获得更好的 SEO

关于A标签href属性调用JS脚本问题!急急急。。。。。

赛普拉斯如何处理没有“目标”和“href”属性的新标签?

如何在没有href但使用内容和url属性的新窗口中打开url

如何使用 jQuery 更改超链接的 href 属性