ASP.NET MVC - 在母版页中引用样式表

时间:2010-01-20 18:54:52

标签: asp.net-mvc visual-studio master-pages

我有一个位于/ Views / Shared中的母版页。母版页引用/Content文件夹中的样式表。

如果我使用"../../Content/style.css"引用样式表,一切正常。但是,我的Web应用程序不在我们的生产环境的根文件夹中,因此相对路径不起作用。

我试过“<%= ResolveUrl(”〜/ content / style.css“)%>”哪个在生产场景中有效,但是Visual Studio中的设计者抱怨我的类错了(我无法在设计选项卡中使用CSS预览页面)。

是否有解决方案可以在两种情况下都能正常工作?我通过编写重置链接标记的服务器端代码在WebForms中实现了这一点。我可以在这做,但我想避免它。

3 个答案:

答案 0 :(得分:8)

尝试此技巧 - 包括样式表两种方式。包含一个具有固定路径引用的引用,Visual Studio将将其用于设计时支持,但将其包含在服务器端注释中,以便在运行时实际上不包含它。第二个引用是在运行时使用的“真实”引用,使用Url.Content(),无论您的应用是否是子目录,它都将起作用。

<% /* %> 
    <link href="../../Content/Site.css" rel="stylesheet" type="text/css" /> 
<% */ %>

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

答案 1 :(得分:6)

Extend the URL Helper是最佳做法。这使您可以从视图中轻松调用它,如果您的结构或文件发生更改,则无需进行大量查找/替换。

public static string Image(this UrlHelper helper, string fileName)  
{  
    return helper.Content("~/Content/Images/" + fileName));  
}  

public static string Stylesheet(this UrlHelper helper, string fileName)  
{  
    return helper.Content("~/Content/Stylesheets/" + fileName);  
}  

public static string Script(this UrlHelper helper, string fileName)  
{  
    return helper.Content("~/Content/Scripts/" + fileName);  
}

   <link href="<%= UrlHelper.Stylesheet("Main.css")%>" rel="stylesheet" 
         type="text/css" />  

答案 2 :(得分:0)

在Views文件夹中,然后进入Shared文件夹有助于理解如何在MVC中引用CSS文件。