389

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

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

我的文件夹中没有名为“css”的文件或文件Content夹。

4

8 回答 8

458

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

在那种特殊情况下,调用 @Styles.Render("~/Content/css")是调用“~/Content/site.css”。

bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css"));
于 2012-08-19T17:27:39.460 回答
34

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

/内容/bootstrap.css

然后你在你的 Bundle.config 中重定向到

.Include("~/Content/Bootstrap.css")

它不会加载css。

于 2013-04-30T13:28:39.150 回答
14

派对有点晚了。但似乎没有人提到
捆绑缩小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.cssSite.css

<link href="/Content/css?v=omEnf6XKhDfHpwdllcEwzSIFQajQQLOQweh_aX9VVWY1" rel="stylesheet">

但是..

<system.web>
  <compilation debug="false" targetFramework="4.6.1" />
</system.web>

仅当 debug设置为falsein 时Web.config
否则bootstrap.css&Site.css将单独送达。
未捆绑,也未缩小:

<link href="/Content/bootstrap.css" rel="stylesheet">
<link href="/Content/Site.css" rel="stylesheet">
于 2017-12-17T18:32:16.843 回答
0

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

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

即使您删除该部分,也不会发生任何事情。

于 2014-09-15T12:42:57.377 回答
0

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

于 2013-09-18T19:49:55.260 回答
0

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 年网站的构建方式。

于 2017-06-30T20:10:52.333 回答
0

在您的 web.config 上将此设置为 False

<compilation debug="false" targetFramework="4.6.1" />
于 2020-11-04T18:04:17.120 回答
0

我做了所有必要的事情来将捆绑添加到 MVC 3 网络(我是现有解决方案的新手)。 Styles.Render对我不起作用。我终于发现我只是少了一个冒号。在母版页中:<%: Styles.Render("~/Content/Css") %> 我仍然对为什么(在同一页面上)<% Html.RenderPartial("LogOnUserControl"); %>没有冒号的情况感到困惑。

于 2018-08-31T15:46:58.823 回答