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

我有一个网站,与剃刀工作正常(C#)所有的编码工作正常,当我使用我的本地testing(WebMatrix IIS)。

当我把它放在我的服务器上“在线”的时候,网站并不在它自己的网站的根部

例如:

http:// intranet.mycompany.com/inform

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

我的“_PageStart.cshtml”看到它正确的原因,当我从链接访问我的网站http://intranet.mycompany.com/inform它给了我在_PageStart.cshtmlconfiguration的布局(它真的显示布局+呈现default.cshtml)

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

<img src="~http://img.dovov.comlogos/hdr.png" /> 

IMG持有人在那里我可以看到它,但显示链接被打破…当我右键单击IMG持有人,并做属性,以查看文件应该在哪里它显示我:

http:// intranet.mycompany.comhttp://img.dovov.comlogos/hdr.png

所以这是“完整的”根不是相对的根…

我该如何解决这个问题?

你必须在你的应用程序中使用相对path:

~在静态HTML代码中不起作用。

你可以写

 <img src="@Url.Content("~http://img.dovov.comlogos/hdr.png")" /> 

要么

 <img src="..http://img.dovov.comlogos/hdr.png" /> 

第一种方法适用于布局文件,当你有不同长度的路由URL时,你的相对path可能会改变。

编辑

关于你关于正常链接的问题:

链接到应用中的另一个页面时,不要将视图文件指定为目标,而是将视图作为结果进行渲染的操作。 为此,您使用HtmlHelper ActionLink

 @Html.ActionLink("Linktext", "YourController", "YourAction") 

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

 <a href="YourController/YourAction">Linktext</a> 

编辑2

好吧,没有MVC – 所以你必须自己产生你的链接。

你也必须使用相对path。 不要用/字符开始任何链接!

 <a href="linkOnSameLevel.cshtml">Link</a> <a href="../linkOnParentLevel.cshtml">Link</a> <a href="subFolder/linkOnOneLevelDown.cshtml">Link</a> 

编辑3

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

 <link href="@Href("~/style.css")" ... 

使用Url.Content如下图所示:

 <img src="@Url.Content("~http://img.dovov.comlogos/hdr.png")" /> 

我知道' ~ '是默认添加的,但我倾向于改变它,以便所有的path相对于我的代码文件,而不是应用程序根,使用“ .. ”例如。 "..http://img.dovov.comlogos"