2012-07-20 104 views
0

我有一个布局页面,它在我的应用程序中的所有视图之间共享。该视图在我的应用中引用了.css。为了参考起见,我现在有我的_layout.cshtml文件的顶部如下:在ASP.NET MVC 3中使用虚拟路径

<link rel="stylesheet" href="/css/themes/default/app.css" /> 

我服用这个程序并加载到通过PhoneGap的一个手机应用程序规划。因此,我不能使用/css/themes/default.app.css。相反,我需要将它转换为相对于文件路径的字符串。例如,我需要动态生成如下所示的值:

<link rel="stylesheet" href="../../../css/themes/default/app.css" /> 

“../”的数量将根据它的深度确定。我认为会有一个实用程序或内置于ASP.NET MVC 3框架中的内容来执行此操作。但是,我找不到任何东西。我有很多文件,我不想手动更新所有的url模式。是否有一个实用程序会自动处理我想要实现的功能?如果是这样,怎么样?

谢谢

回答

1

使用UrlHelper.Content HTML辅助方法。

此方法将虚拟(相对)路径转换为应用程序绝对路径。

<link href="@Url.Content("~/css/themes/default/app.css")" 
             rel="stylesheet" type="text/css" />  

您可能会降低你的css文件夹中的MVC项目的根

+0

当我使用Url.Content,其转换“〜/ CSS /主题Content目录下的/默认/ app.css “到”/css/themes/default/app.css“。我需要的是像“../../css/themes/default/app.css” – 2012-07-20 18:48:49

+0

这些文件在你的根之外? – Shyju 2012-07-20 18:52:03

+0

我想我不确定。 MVC中的整个路由选择经常让我困惑。我会说,我有我的css目录在MVC.csproj /资源和我的cshtml文件在MVC.csproj /视图 – 2012-07-20 19:07:51