风格。在MVC4中渲染

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

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

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

181757 次浏览

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

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

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

注意区分大小写。如果你有文件的话

/内容/ bootstrap.css

然后在Bundle中重定向。配置,

其中包括(“~ /内容/ Bootstrap.css”)

它不会加载css。

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

在App_start中定义。BundleConfig,它在调用

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

即使你删除了这部分也不会发生什么。

出于多种原因,我不会在MVC中使用Bundles。这在你的情况下不起作用,因为你必须在Apps_Start文件夹中设置一个自定义bundlecconfig类。当你可以像这样简单地在你的html头部添加一个样式时,这是没有意义的:

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

你也可以将这些添加到布局中。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年网站是如何构建的。

派对来晚了一点。但是似乎没有人提到
捆绑销售,StyleBundle缩小,所以。< / p >

@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()有效组合&< em >贬低< / em > bootstrap.css &Site.css < br >

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

. .

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

只有当 debugWeb.config中被设置为false 否则bootstrap.css &Site.css将单独提供 不捆绑,也不缩小:

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

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

在你的web.config上设置为False

<compilation debug="false" targetFramework="4.6.1" />