我有一个位于/ Views / Shared中的母版页。母版页引用/Content
文件夹中的样式表。
如果我使用"../../Content/style.css"
引用样式表,一切正常。但是,我的Web应用程序不在我们的生产环境的根文件夹中,因此相对路径不起作用。
我试过“<%= ResolveUrl(”〜/ content / style.css“)%>”哪个在生产场景中有效,但是Visual Studio中的设计者抱怨我的类错了(我无法在设计选项卡中使用CSS预览页面)。
是否有解决方案可以在两种情况下都能正常工作?我通过编写重置链接标记的服务器端代码在WebForms中实现了这一点。我可以在这做,但我想避免它。
答案 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文件。