Styles.Render在MVC4中

.NET MVC4项目中, @Styles.Render是如何工作的?

我的意思是,在@Styles.Render("~/Content/css")哪个文件调用?

我没有在我的Content文件夹中有一个叫“css”的文件或文件夹。

它调用包含在App_Start文件夹的BundleConfig类中声明的特定包中的文件。

在这种情况下,对@Styles.Render("~/Content/css")的调用称为“〜/ Content / site.css”。

 bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css")); 

注意区分大小写。 如果你有一个文件

/Content/bootstrap.css

并在你的Bundle.config中redirect到

.INCLUDE( “〜/内容/ Bootstrap.css”)

它不会加载的CSS。

src="@url.content("~/Folderpath/*.css")"应该呈现样式

正如App_start.BundleConfig中所定义的那样,它只是调用

 bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css")); 

即使删除了该部分,也不会有任何反应。

马球我不会在MVC中使用捆绑由于多种原因。 它不起作用,因为你必须在你的Apps_Start文件夹中设置一个自定义的BundleConfig类。 这样做是没有意义的,当你可以简单地添加一个样式在你的HTML头像这样:

 <link rel="stylesheet" href="~/Content/bootstrap.css" /> <link rel="stylesheet" href="~/Content/bootstrap.theme.css" /> 

您也可以将这些添加到从所有视图调用的Layout.cshtml或partial类中,并将其放入每个页面中。 如果你的样式改变,你可以很容易地改变名称和path,而不必重新编译。

在类中向CSS添加硬编码的链接也会破坏UI和devise与应用程序模型分离的整体目的。 你也不想在c#中pipe理硬编码的样式表path,因为你不能再为不同的设备,主题等构build“皮肤”或单独的样式模型,如下所示:

 <link rel="stylesheet" href="~/UI/Skins/skin1/base.css" /> <link rel="stylesheet" href="~/UI/Skins/skin2/base.css" /> 

使用此系统和Razor,您现在可以从数据库或用户设置中切换出皮肤path,只需dynamic更改path即可更改网站的整个devise。

CSS 15年前的目标是为网站开发由用户控制的和应用程序控制的样式表“皮肤”,这样您就可以将UI外观与应用程序分开,并独立于数据结构重新devise内容。 ….例如打印版本,手机,audio版本,原始XML等

现在回到这个“老式的”,使用C#类的硬编码path系统,像Bootstrap这样的僵化的风格,以及将站点主题与应用程序代码合并,我们又回到了1998年如何build立网站。