ASP.net MVC 2会将<link>
标记中的所有相对网址重写为完整的相对路径,这很好,但它仅适用于仅使用<link>
标记编写的网址,而不适用于{ {1}}代码或任何其他元素。
<script>
标记,如<link>
您会发现MVC已将您的网址标记重写为完整网址,如:
<link href="test.xml" type="text/css"/>
我知道这个文件位于Views文件夹中,由于web.config文件阻止了对文件的任何请求,因此无法查看该文件,但这不是我的问题
如何让MVC不仅在<link href="../Views/Home/Text.xml" type="text/css" />
tage中重写所有网址?
任何帮助都将不胜感激。
答案 0 :(得分:1)
这是因为您的<head>
代码具有runat="server"
属性(来自WebForms的恶意遗产)。删除它,不会发生重写。而不是:
<link href="test.css" type="text/css" />
在处理网址时,您应始终使用网址助手:
<link href="<%= Url.Content("~/test.css") %>" type="text/css" />
您不应该让自动重写发生,请始终使用Url.Content
链接静态资源。
答案 1 :(得分:1)
也许你已经尝试过这样的事情了
<head runat="server">
<link href="test.xml" type="text/css"/>
<script src="<%= ((WebFormView)this.ViewContext.View).ViewPath.Substring(1,
((WebFormView)this.ViewContext.View).ViewPath.LastIndexOf('/')) %>test1.xml" type="text/javascript"></script>
</head>
将html呈现为
<head>
<link href="Views/Shared/test.xml" type="text/css" />
<script src="/Views/Home/test1.xml" type="text/javascript"></script>
</head>