在一个.NET MVC4
项目中如何@Styles.Render
运作?
我的意思是,它在@Styles.Render("~/Content/css")
哪个文件中调用?
我的文件夹中没有文件或名为“ css”的Content
文件夹。
在一个.NET MVC4
项目中如何@Styles.Render
运作?
我的意思是,它在@Styles.Render("~/Content/css")
哪个文件中调用?
我的文件夹中没有文件或名为“ css”的Content
文件夹。
Answers:
它正在调用包含BundleConfig
在该App_Start
文件夹内的类中的特定捆绑软件中的文件。
在这种特定情况下,的呼叫 @Styles.Render("~/Content/css")
正在呼叫“〜/ Content / site.css”。
bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css"));
*.min.*
接管*.*
文件。
晚会晚了一点。但似乎没有人提到
的捆绑和微小的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
时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"));
即使删除该部分,也不会发生任何事情。
Polo我出于多种原因不会在MVC中使用捆绑软件。在您的情况下,它不起作用,因为您必须在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年建立网站的方式。
minification
那么呢?:s / :(
我做了所有必要的事情以将捆绑添加到MVC 3网站(我是现有解决方案的新手)。 Styles.Render
没有为我工作。我终于发现我只是想念一个冒号。在母版页:<%: Styles.Render("~/Content/Css") %>
我仍然搞不清楚为什么(在同一页面上)<% Html.RenderPartial("LogOnUserControl"); %>
的作品没有冒号。