在一个.NET MVC4
项目中是如何@Styles.Render
工作的?
我的意思是,它在@Styles.Render("~/Content/css")
哪个文件中调用?
我的文件夹中没有名为“css”的文件或文件Content
夹。
在一个.NET MVC4
项目中是如何@Styles.Render
工作的?
我的意思是,它在@Styles.Render("~/Content/css")
哪个文件中调用?
我的文件夹中没有名为“css”的文件或文件Content
夹。
BundleConfig
它正在调用文件夹中类中声明的特定包中包含的App_Start
文件。
在那种特殊情况下,调用 @Styles.Render("~/Content/css")
是调用“~/Content/site.css”。
bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css"));
注意区分大小写。如果你有一个文件
/内容/bootstrap.css
然后你在你的 Bundle.config 中重定向到
.Include("~/Content/Bootstrap.css")
它不会加载css。
派对有点晚了。但似乎没有人提到
捆绑和缩小,StyleBundle
所以..
@Styles.Render("~/Content/css")
来电Application_Start()
:
BundleConfig.RegisterBundles(BundleTable.Bundles);
这反过来又调用
public static void RegisterBundles(BundleCollection bundles)
{
bundles.Add(new StyleBundle("~/Content/css").Include(
"~/Content/bootstrap.css",
"~/Content/Site.css"));
}
RegisterBundles()
有效地将 &合并 到
一个文件中, bootstrap.css
Site.css
<link href="/Content/css?v=omEnf6XKhDfHpwdllcEwzSIFQajQQLOQweh_aX9VVWY1" rel="stylesheet">
但是..
<system.web>
<compilation debug="false" targetFramework="4.6.1" />
</system.web>
仅当 debug
设置为false
in 时Web.config
。
否则bootstrap.css
&Site.css
将单独送达。
未捆绑,也未缩小:
<link href="/Content/bootstrap.css" rel="stylesheet">
<link href="/Content/Site.css" rel="stylesheet">
正如 App_start.BundleConfig 中定义的那样,它只是调用
bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css"));
即使您删除该部分,也不会发生任何事情。
src="@url.content("~/Folderpath/*.css")"
应该渲染样式
Polo 由于多种原因,我不会在 MVC 中使用 Bundle。它不适用于您的情况,因为您必须在 Apps_Start 文件夹中设置自定义 BundleConfig 类。当您可以像这样简单地在 html 的头部添加样式时,这是没有意义的:
<link rel="stylesheet" href="~/Content/bootstrap.css" />
<link rel="stylesheet" href="~/Content/bootstrap.theme.css" />
您还可以将这些添加到 Layout.cshtml 或部分类中,这些类会从您的所有视图中调用并放入每个页面中。如果您的样式发生更改,您可以轻松更改名称和路径,而无需重新编译。
在类中添加到 CSS 的硬编码链接也破坏了将 UI 和设计与应用程序模型分离的整个目的。您也不希望在 c# 中管理硬编码样式表路径,因为您不能再为不同的设备、主题等构建“皮肤”或单独的样式模型,如下所示:
<link rel="stylesheet" href="~/UI/Skins/skin1/base.css" />
<link rel="stylesheet" href="~/UI/Skins/skin2/base.css" />
使用此系统和 Razor,您现在可以从数据库或用户设置中切换皮肤路径,并通过动态更改路径来更改网站的整体设计。
15 年前 CSS 的全部目的是为网站开发用户控制和应用程序控制的样式表“皮肤”,这样您就可以将 UI 外观与应用程序分开,并将内容重新调整为独立于数据结构的用途。 ....例如可打印版本、移动版本、音频版本、原始 xml 等。
现在回到这个“老式”、使用 C# 类的硬编码路径系统、Bootstrap 等僵化风格以及将网站主题与应用程序代码合并,我们又回到了 1998 年网站的构建方式。
在您的 web.config 上将此设置为 False
<compilation debug="false" targetFramework="4.6.1" />
我做了所有必要的事情来将捆绑添加到 MVC 3 网络(我是现有解决方案的新手)。 Styles.Render
对我不起作用。我终于发现我只是少了一个冒号。在母版页中:<%: Styles.Render("~/Content/Css") %>
我仍然对为什么(在同一页面上)<% Html.RenderPartial("LogOnUserControl"); %>
没有冒号的情况感到困惑。