我有一个ASP.NET Razor网站,当我在本地测试(通过WebMatrix IIS)时,它可以正常工作。
当我把它“在线”在我的服务器上时,网站并不在网站本身的根目录。例如:http://intranet.mycompany.com/inform
这基本上是我的文件夹结构的“根”,所以我所有的文件夹都从那里开始(CSS文件,default.cshtml...等等)
我的“_PageStart.cshtml”可以正确地看到它,因为当我从链接http://intranet.mycompany.com/inform
访问我的站点时,它会给我在_PageStart.cshtml中配置的布局(它确实显示了布局+呈现的默认值.cshtml)。
但是没有其他东西可以获得正确的路径,例如:
<img src="~/images/logos/hdr.png" />
img保持器在那里我可以看到它,但它显示链接断了。当我右键单击img保持器并选择properties来查看文件应该在哪里时,它显示:http://intranet.mycompany.com/images/logos/hdr.png
因此,它将进入“完整”根目录,而不是网站的相对根目录。
我该怎么弥补?
3条答案
按热度按时间jdzmm42g1#
你必须在整个应用程序中使用相对路径:
~
不能在静态html代码中工作。你可以写
或
第一种方法适用于布局文件,当你有不同长度的路由url时,你的相对路径可能会改变。
编辑
关于你的正常链接问题:
当链接到应用中的另一个页面时,您不会指定视图文件作为目标,而是指定渲染视图的操作作为结果。使用HtmlHelper
ActionLink
:自动为您生成正确的URL:
编辑2
好吧,没有MVC -所以你必须自己生成链接。
也必须使用相对路径。不要以
/
字符开始任何链接!编辑3
当使用Layout页面时,您可以使用
Href
扩展方法来生成相对url:enxuqcxy2#
使用
Url.Content
,如下所示:sq1bmfud3#
我知道默认情况下会添加'
~
',但我倾向于更改它,以便所有路径都相对于我的代码文件而不是应用程序根,使用“..
“例如。"../images/logos"
等