【问题标题】:Relative links with Razor in ASP.NET without MVC在没有 MVC 的 ASP.NET 中与 Razor 的相对链接
【发布时间】:2013-11-08 18:37:39
【问题描述】:

我们正在开发一个站点,该站点的所有页面都位于根目录中。因此,所有链接都引用默认情况下它们所在目录中的位置...

<a href="Page.cshtml">Page</a> 

我们对其进行了重组,其中一些页面现在位于子文件夹中,因此整个网站的链接现在需要是相对的。我读过使用 Razor 时,波浪号 (~) 在标记中不起作用。即&lt;a href="~/Page.cshtml"&gt;Page&lt;/a&gt;

如何格式化链接以使其指向根目录中的某些内容?

类似的东西? &lt;a href="@Href("~/Page.cshtml")"&gt;Page&lt;/a&gt;

编辑:已解决:&lt;a href="@Href("~/")Page.cshtml"&gt;Page&lt;/a&gt;

【问题讨论】:

    标签: c# html asp.net razor razor-2


    【解决方案1】:

    试试这个:

    @helper _href(string url)
    {
        @VirtualPathUtility.ToAbsolute(url)
    }
    

    在页面上使用它:

    &lt;a href="@_href("~/page.html")"&gt;linky&lt;/a&gt;

    编辑:我从来不知道内置的 Href 方法是我无法理解的。您绝对应该使用它。

    【讨论】:

    • 感谢您的建议,实际上只是找到了一个更简单的解决方法,我将对原始帖子进行编辑。
    • 您的解决方法没有多大意义。为什么使用@Href("~/")Page.cshtml 而不是@Href("~/Page.cshtml")。后者更简洁,更易于阅读。
    • 它可以在几秒钟内通过查找和替换添加到整个站点,我们可能会更改它以在路上清理它。
    【解决方案2】:

    使用Href 方法,如下所示:

    @Href("SomePage")
    

    请注意,您不需要使用文件扩展名。

    【讨论】:

      【解决方案3】:

      浏览@Html.ActionLink

      它允许你使用控制器名称

      【讨论】:

      • 我们没有使用 MVC。
      • 即使他用的是MVC,你也永远不会用ActionLink来引用静态内容。这就是@Url.Content() 的用途。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-18
      • 2015-05-07
      • 1970-01-01
      • 2012-07-07
      • 1970-01-01
      • 1970-01-01
      • 2016-01-10
      相关资源
      最近更新 更多