Asp.net mvc 2 asp.net MVC 2中的相对url自动重写

Asp.net mvc 2 asp.net MVC 2中的相对url自动重写,asp.net-mvc-2,url-rewriting,relative-path,Asp.net Mvc 2,Url Rewriting,Relative Path,ASP.net MVC 2会将标记中的所有相对URL重写为完整的相对路径,这很好,但它仅适用于标记中写入的URL,而不适用于标记或任何其他元素 创建MVC2Web应用程序 创建任何控制器及其视图 在视图内部创建一个类似这样的标记 运行应用程序,导航到您创建的视图,然后查看源 您会发现MVC已将标记中的url重写为完整url,如: <link href="../Views/Home/Text.xml" type="text/css" /> 我知道该文件位于Views文件夹中,无法

ASP.net MVC 2会将
标记中的所有相对URL重写为完整的相对路径,这很好,但它仅适用于
标记中写入的URL,而不适用于
标记或任何其他元素

  • 创建MVC2Web应用程序
  • 创建任何控制器及其视图
  • 在视图内部创建一个类似这样的
    标记
  • 运行应用程序,导航到您创建的视图,然后查看源
  • 您会发现MVC已将标记中的url重写为完整url,如:

    <link href="../Views/Home/Text.xml" type="text/css" />
    
    
    
    我知道该文件位于Views文件夹中,无法查看,因为web.config文件会阻止对该文件夹中文件的任何请求,但这不是我的问题

    如何让MVC不仅在
    阶段重写所有URL


    任何帮助都将不胜感激。

    之所以会出现这种情况,是因为您的
    标记具有
    runat=“server”
    属性(来自WebForms的恶劣传统)。删除它,就不会发生重写。也不是:

    <link href="test.css" type="text/css" />
    
    
    
    处理Url时,应始终使用Url帮助程序:

    <link href="<%= Url.Content("~/test.css") %>" type="text/css" />
    
    
    

    您不应该让自动重写发生,始终使用
    Url.Content
    链接静态资源。

    也许您已经尝试过类似的方法

    <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>
    
    
    
    我明白了,但我希望重写,但不仅仅是针对标签,针对所有标签,例如,谢谢您的回复anyway@AhmedGalal,这就是为什么您应该始终使用
    Url.Content
    来指定Url,就像我的示例中那样。这是在ASP.NET MVC应用程序中设置URL的正确方法。对于链接到控制器操作的动态Url,您应该使用相应的html帮助程序:
    html.ActionLink
    html.BeginForm
    ,…@Darin Dimitrov,我知道Url.Content,但我不能使用它,因为我不知道我的文件夹将放在哪里,它是一种你上传到服务器上的文件夹,它是一个应该保存它的服务器。我只想使用相对URL,就像标签中发生的一样。@Ahmed Galal,我不明白。此文件夹是web应用程序根目录的一部分还是可能位于服务器上的任何位置?如果它可以在任何地方,不要期望客户端浏览器能够访问它。它需要位于您的服务器根目录中,如果只是使用
    Url.Content(“~/uploads”)
    ,则无论应用程序位于何处,以何种方式托管,它都需要位于该文件夹的正确相对路径。@Darin Dimitrov,是的,它是web应用程序根目录的一部分,但当它上载到服务器时,您的文件夹可能会被重命名,所以你无法知道它的确切工作路径,但是我正在寻找一种方法,使自动url重写发生在标记中,谢谢你的帮助