在一个 .NET MVC4
项目中,@Styles.Render
是如何工作的?
我的意思是,在 @Styles.Render("~/Content/css")
中它调用了哪个文件?
我在我的 Content
文件夹中没有叫做“css”的文件或文件夹。
在一个 .NET MVC4
项目中,@Styles.Render
是如何工作的?
我的意思是,在 @Styles.Render("~/Content/css")
中它调用了哪个文件?
我在我的 Content
文件夹中没有叫做“css”的文件或文件夹。
它正在调用在App_Start
文件夹中声明的特定捆绑包中包含的文件。
在这种特定情况下,对@Styles.Render("~/Content/css")
的调用将调用"~/Content/site.css"。
bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css"));
*.min.*
文件而不是*.*
文件。 - skmasq注意大小写敏感性。如果你有一个文件
/Content/bootstrap.css
并且你在Bundle.config中重定向到
.Include("~/Content/Bootstrap.css")
它将无法加载css。
有点晚了。但是似乎没有人提到StyleBundle
的bundling和minification,所以..
@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>
Web.config
中的debug
设置为false
时,才会这样做。bootstrap.css
和Site.css
。<link href="/Content/bootstrap.css" rel="stylesheet">
<link href="/Content/Site.css" rel="stylesheet">
<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,您现在可以从数据库或用户设置中切换皮肤路径,并通过动态更改路径来更改整个网站的设计。
CSS 15年前的整个目的是为了开发用户控制和应用程序控制的样式表“皮肤”,以便您可以在不影响应用程序的情况下切换UI外观和感觉,并独立于数据结构重新定位内容,例如可打印版本、移动版、音频版本、原始XML等。
现在通过使用C#类、像Bootstrap这样的固定样式以及将站点主题与应用程序代码合并,我们又回到了1998年建立网站的方式。
minification
我们就无视它吗?:s / :( - Scott Fraley如在App_start.BundleConfig中定义,它只是调用
bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css"));
即使您删除了该部分,也不会发生任何事情。
我已经完成了所有必要的工作,为MVC 3 Web添加捆绑(我是新的现有解决方案)。Styles.Render
对我无效。最后我发现我只是缺少了一个冒号。在主页面中:<%: Styles.Render("~/Content/Css") %>
我仍然困惑于为什么(在同一页上)<% Html.RenderPartial("LogOnUserControl"); %>
可以不用冒号。
src="@url.content("~/Folderpath/*.css")"
应该呈现样式
<compilation debug="false" targetFramework="4.6.1" />