在Razor中使用站点根相对链接

pSy*_*ToR 53 c# asp.net razor

我有一个网站,使用Razor(C#)工作正常,当我使用我的本地测试(WebMatrix IIS)时,所有编码都正常工作.

当我把它"在线"放在我的服务器上时,网站不是它自己的网站的根

例如:

http:// intranet.mycompany.com/inform

这基本上是我的文件夹结构的"根",所以我的所有文件夹都从那里开始(css文件default.cshtml ...等等)

当我从链接http://intranet.mycompany.com/inform访问我的网站时,我的"_PageStart.cshtml"正确地看到它,它给了我在_PageStart.cshtml中配置的布局(它真的显示了布局+呈现default.cshtml)

但没有其他任何东西正在获得正确的道路,例如:

<img src="~/images/logos/hdr.png" />
Run Code Online (Sandbox Code Playgroud)

img持有人在那里我可以看到它,但显示链接被破坏...当我右键单击img持有者并执行属性以查看文件应该在哪里它显示我:

http:// intranet.mycompany.com/images/logos/hdr.png

所以它是"完整"根而不是相对根...

我该如何解决这个问题?

Jan*_*Jan 102

您必须在整个应用中使用相对路径:

~ 将无法在静态HTML代码中工作.

你可以写

<img src="@Url.Content("~/images/logos/hdr.png")" />
Run Code Online (Sandbox Code Playgroud)

要么

<img src="../images/logos/hdr.png" />
Run Code Online (Sandbox Code Playgroud)

第一种方法适用于布局文件,当您有不同长度的路由URL时,相对路径可能会发生变化.

编辑

关于正常链接的问题:

链接到应用程序中的另一个页面时,您不会将视图文件指定为目标,而是将视图呈现为结果的操作.为此你使用HtmlHelper ActionLink:

@Html.ActionLink("Linktext", "YourController", "YourAction")
Run Code Online (Sandbox Code Playgroud)

这会自动为您生成正确的URL:

<a href="YourController/YourAction">Linktext</a>
Run Code Online (Sandbox Code Playgroud)

编辑2

好的,没有MVC - 所以你必须自己生成你的链接.

你也必须使用相对路径.不要与/角色开始任何链接!

<a href="linkOnSameLevel.cshtml">Link</a>
<a href="../linkOnParentLevel.cshtml">Link</a>
<a href="subFolder/linkOnOneLevelDown.cshtml">Link</a>
Run Code Online (Sandbox Code Playgroud)

编辑3

使用布局页面时,您可以使用Href扩展方法生成相对URL:

<link href="@Href("~/style.css")" ...
Run Code Online (Sandbox Code Playgroud)


rob*_*sta 5

Url.Content如下所示使用:

<img src="@Url.Content("~/images/logos/hdr.png")" />
Run Code Online (Sandbox Code Playgroud)