2010-05-18 119 views
0

当我将我的图像/脚本/ css文件拖放到我的视图中时,相对路径将自动用于引用文件。使用虚拟目录的Mvc相对路径.help!

例如:

<link href="../../Content/style.css" rel="stylesheet" type="text/css" /> 
<script src="../../Scripts/jquery-min.js" type="text/javascript"></script> 
<img src="../../Images/logo.jpg" /> 

它工作正常,当我主持它在我的根目录,但如果我使用虚拟目录,然后能够正确地只指我的CSS文件,其余的将返回404。 ..因为它会引用http://{root}/Images/logo.jpg而不是http://{root}/{virtual directory}/Images/logo.jpg

但为什么css文件正在工作?以及如何为根&虚拟目录情况正确指定相对路径?

回答

5

像...

<script type="text/javascript" 
      src="<%= Url.Content ("~/Scripts/jquery.js") %>"> 
    </script> 

会做的伎俩

2

此外,有关Kazi Manzur's MVC Best Practices,您可以创建UrlHelper的方法来处理所有内容(脚本,样式表,图像的创建等)文件路径。这样一来,如果你改变了目录,所有你需要做的就是改变相应UrlHelper:

public static string Style(this UrlHelper url, string fileName) 
    { 
     return url.Content("~/content/{0}".FormatWith(fileName)); 
    } 

    public static string Script(this UrlHelper url, string fileName) 
    { 
     return url.Content("~/scripts/{0}".FormatWith(fileName)); 
    } 

然后,在你的ViewPage或母版,你可以写像这样的路径:

<link href="<%= Url.Style("site.css")%>" rel="stylesheet" type="text/css"/> 
+0

有趣。我想这是用来处理生产不符合开发或测试配置的情况。似乎读出这些web配置将使它更具动态性。 – MikeJ 2010-05-18 12:04:04

+0

谢谢,但用这种方法,我将失去我在Visual Studio中的智能感知。我现在所做的是添加一个自定义的httpmodule,在页面返回给客户端之前,它用html内部的绝对路径替换“../../”。 – kevin 2010-05-19 05:25:11