asp.net-mvc-4 – ASP.NET MVC 4 – 从Controller添加Bundle?
发布时间:2020-12-16 06:48:59 所属栏目:asp.Net 来源:网络整理
导读:我的网站上有一些使用某些CSS和JS资源的页面 – 但它们是唯一使用该css或js文件的页面 – 因此我不想在每个页面中包含CSS和JS引用.不是修改每个View来引用它需要的CSS / JS,我想我可以在Controller中创建一个bundle并将它添加到已经注册的Bundles中,然后它将
我的网站上有一些使用某些CSS和JS资源的页面 – 但它们是唯一使用该css或js文件的页面 – 因此我不想在每个页面中包含CSS和JS引用.不是修改每个View来引用它需要的CSS / JS,我想我可以在Controller中创建一个bundle并将它添加到已经注册的Bundles中,然后它将被包含在bundle引用中,但是这不是似乎是可能的,或者我可能只是以错误的方式去做.
例如,在我的Controller for a registration页面中,我想我可以这样写: Bundle styleBundle = new Bundle("~/bundles/registrationStyleBundle"); styleBundle.Include("~/Content/Themes/Default/registration.css"); BundleTable.Bundles.Add(styleBundle); 然后在我的/Views/Shared/_Layout.cshtml中有这个: @foreach(Bundle b in BundleTable.Bundles) { if (b is StyleBundle) { <link href="@BundleTable.Bundles.ResolveBundleUrl(b.Path)" rel="stylesheet" type="text/css" /> } else if (b is ScriptBundle) { <script src="@BundleTable.Bundles.ResolveBundleUrl(b.Path)" type="text/javascript"></script> } } 但这不起作用 – 唯一被渲染到我的页面的包最终是我在RegisterBundles中指定的那些(在/App_Start/BundleConfig.cs中) 知道如何实现这种“动态”或“运行时”捆绑吗? 编辑:根据Jasen的建议,我最终做的是将捆绑创建/注册代码从控制器中取出并将其添加到/App_Start/BundleConfig.cs中的RegisterBundles().这样,捆绑包已经可用并且内容被缩小.所以: bundles.Add( new StyleBundle("~/bundles/registrationStyleBundle") .Include("~/Content/Themes/default/registration.css")); 然后,在我看来,我补充说: @section viewStyles{ <link href="@BundleTable.Bundles.ResolveBundleUrl("~/bundles/registrationStyleBundle")." rel="stylesheet" type="text/css" /> } 然后,在/Views/Shared/_Layout.cshtml中,我添加了这个: @RenderSection("viewStyles",required: false) 解决方法
使用@section Scripts {}块有条件地添加包.
_Layout.cshtml <body> ... @RenderSection("Scripts",required: false) </body> FooView.cshtml @section Scripts { @Scripts.Render("~/bundles/foo") } KungFooView.cshtml @section Scripts { @Scripts.Render("~/bundles/kungfoo") } 在我的BundleConfig中,我通常将资源分组 bundles.Add(new ScriptBundle("~/bundles/Areas/Admin/js").Include(...); bundles.Add(new StyleBundle("~/bundles/Areas/Admin/css").Include(...); bundles.Add(new ScriptBundle("~/bundles/Areas/Home/js").Include(...); bundles.Add(new StyleBundle("~/bundles/Areas/Home/css").Include(...); 现在,我可以定义多个布局文件,也可以选择性地向视图添加包. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc – lowerCamelCase中的ASP.NET MVC 3输入名称和
- 如何避免ASP.NET中的快速页面刷新?
- asp.net-mvc-2 – 向下维护页面?
- asp.net – 重启后,每个页面的MVC应用程序都很慢
- iis-7 – 经典asp:错误’800a01ad’ActiveX组件无法创建对
- asp.net – 正则表达式验证器不验证空文本框
- asp.net-core – 如何将IHttpContextAccessor注入到Autofac
- 从ASP.NET应用程序写入IIS日志
- asp.net – Ajax Control Toolkit正在加载太多脚本资源
- asp.net – 在代码后面和SqlDataSource中编写查询
推荐文章
站长推荐
- asp.net-mvc – ASP.NET MVC:无法在我的控制器中
- ASP.NET MVC在IIS7下发布无法显示的解决办法
- asp.net-mvc – System.Web.Mvc.ActionFilterAtt
- asp.net-mvc – Sitecore PageEditor随机显示Gla
- asp.net – 当我在gridview中进行排序时触发了Gr
- asp.net-mvc – Razor视图引擎:复杂循环和HTML
- asp.net – RouteTable.Routes和HttpConfigurati
- asp.net – WS-Federation真正做了什么(深入并通
- asp.net-mvc – ASP.NET MVC 3用户验证
- 在IIS 7.5上运行ASP Classic
热点阅读