【问题标题】:Link without trailing slash不带斜杠的链接
【发布时间】:2016-08-22 08:47:44
【问题描述】:

我在 MVC 中使用以下内容在我的应用程序中创建指向我的主页的链接:

<a href="~/">home</a>

不幸的是,当它在应用程序下运行时,这将创建一个类似

的链接
<a href="/app-name/">home</a>

有没有一种方法可以创建指向app-name 的链接而无需尾部斜杠(或仅对其进行硬编码)?

我们的网站已规范化,因此任何带有斜杠的网址最终都会被重定向到其非斜杠版本,并且由于此链接带有斜杠,因此会导致不必要的重定向跳跃,这会损害我们的 seo 评级

【问题讨论】:

  • 我建议检查 URL 是否 EndsWith("/"),如果是,则收集 Substring(0, MyString.Length - 1)

标签: c# asp.net-mvc razor


【解决方案1】:

多亏了 Lajos Arpad 的评论,它让我想到了另一个组成 url,所以我想如果我使用 VirtualPathUtility.ToAbsolute,我也许可以对结果进行子串化。

但是使用以下意味着我不需要子字符串来获取我需要的 url:

<a href="@VirtualPathUtility.ToAbsolute("~")">Home</a>

【讨论】:

    【解决方案2】:

    Html.ActionLink 帮助器应该生成一个符合您要求的链接:

    @Html.ActionLink("home", "Index", "Home")
    

    假设您的主页名为“Index”并由“HomeController”呈现。

    【讨论】:

    • 不幸的是,这也添加了斜杠
    • 看起来您应用中的路由配置与我的应用不同。 RouteCollection.AppendTrailingSlash 是否设置为 true?
    • 不确定 - 我没有设置它,所以除非默认设置为 true,否则我不这么认为
    • 默认为假。如果设置为RouteTable.Routes.AppendTrailingSlash = true;,我还可以看到我的示例中的 URL 带有斜杠。如果我不添加此行,则看不到尾部斜杠。
    • 嗯,很奇怪。我还没有将它添加到我的路由配置中,所以不确定我为什么要附加斜杠
    猜你喜欢
    • 2016-07-09
    • 1970-01-01
    • 1970-01-01
    • 2016-10-13
    • 1970-01-01
    • 2016-08-24
    • 1970-01-01
    • 1970-01-01
    • 2012-05-08
    相关资源
    最近更新 更多