标签: asp.net-optimization

何时在MVC4中使用bundle

在MVC 4中,我可以使用@ Styles.Render("〜/ Content/css")调用一组CSS文件定义BundleConfig文件,而不是直接调用CSS.

什么时候应该使用bundle而不是直接调用文件?当我们有各种CSS文件来简化代码时,我清楚地理解它.但是如果有一个CSS文件,我们应该使用一个包还是直接调用它?

c# asp.net-mvc bundles asp.net-mvc-4 asp.net-optimization

3
推荐指数
1
解决办法
7090
查看次数

为什么我的Scripts.RenderSection不能用于jqGrid?

我正在使用Visual Studio 2012和MVC 4,在我的_Layout.cshtml中,我有以下内容:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width" />
        @Styles.Render("~/Content/css")
        @Scripts.Render("~/bundles/jquery")
        @Scripts.Render("~/bundles/jqueryui")
        @Scripts.Render("~/bundles/jqgrid")

        @RenderSection("head", required: false)
    </head>
    <body>
        @RenderBody()

        @RenderSection("scripts", required: false)
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

在BundleConfig.cs中我有

public class BundleConfig
{
    public static void RegisterBundles(BundleCollection bundles)
    {
        bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
            "~/Scripts/jquery-{version}.js"));

        bundles.Add(new ScriptBundle("~/bundles/jqueryui").Include(
            "~/Scripts/jquery-ui-{version}.js"));

        bundles.Add(new ScriptBundle("~/bundles/jqgrid").Include(
            "~/Scripts/jquery.jqGrid.min.js"));
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经三重检查,我的脚本文件夹确实包含jquery.jqGrid.min.js,但它没有包括在内.

我的Html头看起来像:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width" />
    <link href="/Viper/Content/css" rel="stylesheet"/>

    <script src="/Viper/Scripts/jquery-1.8.1.js"></script>

    <script src="/Viper/Scripts/jquery-ui-1.8.23.js"></script>

</head>
Run Code Online (Sandbox Code Playgroud)

任何想法为什么没有添加?

html bundles asp.net-mvc-4 asp.net-optimization

3
推荐指数
1
解决办法
2020
查看次数

渲染DynamicFolderBundle?

我正在尝试添加一个捆绑的文件夹,所以我不必手动将每个新的.less文件添加到通常的包中,但我不知道如何渲染它.

在BundleConfig中,

 BundleTable.Bundles.Add(new DynamicFolderBundle("Content/autobundled", "*.less", new LessTransform(), new CssMinify()));
//.less sheets are at Content/autobundled/example.less 
Run Code Online (Sandbox Code Playgroud)

在Razor页面中:

 @Styles.Render("Content/autobundled")
Run Code Online (Sandbox Code Playgroud)

输出:

<link href="/Binky.Web/Content/autobundled" rel="stylesheet">
Run Code Online (Sandbox Code Playgroud)

但这并没有链接任何文件,只是链接到不可浏览的目录.我读过的文章没有说明在创建文件夹后如何使用文件夹包.

asp.net asp.net-mvc-4 bundling-and-minification asp.net-optimization

3
推荐指数
1
解决办法
1970
查看次数

有没有办法从代码隐藏中读取System.Web.Optimization内容?

有没有办法从代码隐藏中读取System.Web.Optimization内容?我试着在dll周围戳,但我找不到一种方法来读取包内容(据我所知,它意味着通过处理程序来处理对bundle的调用.

我的意图是使用sass,由于转换(在缩小之上)会导致更重的处理,并将其生成为文件,然后将其提供给最终用户.通过使用WebRequest读取文件并保存响应,我找到了一个解决方案,但它只是觉得对我很讨厌.

.net c# asp.net asp.net-optimization system.web.optimization

3
推荐指数
1
解决办法
619
查看次数

从ASP.NET MVC 4中的部分或编辑器模板触发包含

我正在构建一个基于ASP.NET MVC 4的框架.我喜欢MVC4中的新捆绑功能,但我遇到了一个问题,我不确定新的捆绑功能是否能解决这个问题.

我的布局视图在之前的页面底部呈现它的脚本包</body>.

由于我的项目是一个框架,因此该视图不知道该页面所需的所有包.我的项目正在大量使用编辑器模板,可能需​​要包含一些javascript,但无法在编辑器模板中呈现它,因为:

  • 该脚本只需包含一次,编辑器模板可以多次呈现.
  • 该脚本可能依赖于其他javascript库,如jQuery,尚未包含(它们在页面底部呈现).

所以,我想在编辑器模板中做的是这样的事情:

@Scripts.TriggerInclusion("~/path/to/bundle/that/this/editor/needs")
Run Code Online (Sandbox Code Playgroud)

这将导致bundle脚本标记仅向页面末尾呈现一次.

我可以把这个构建到我的项目的基础设施中,但是我希望这种事情已经得到了某种支持.谢谢!

.net asp.net bundle asp.net-mvc-4 asp.net-optimization

2
推荐指数
1
解决办法
2347
查看次数

在ASP.Net WebForms中使用捆绑(来自Systelm.Web.Optimization)会导致问题

我试图通过在我的应用程序中使用我的应用程序进行一些优化.BundlesCollectionASP.Net 4.0

我的样式包包含6个css文件.这些文件包含在母版页中.如果我从母版页中删除CSS文件,而是放下以下内容:

<%= Styles.Render("~/bundles/css/default") %>
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

The Controls collection cannot be modified because the control contains code 
    blocks (i.e. <% ... %>).
Run Code Online (Sandbox Code Playgroud)

asp.net bundling-and-minification asp.net-optimization

2
推荐指数
1
解决办法
1239
查看次数


ASP.NET Web表单BundleTable仍然在调试模式下捆绑

我有一个ASP.NET Web表单应用程序,使用Microsoft.AspNet.Web.Optimization包中的新Bundling和Minification功能在.NET 4.5上运行.

到目前为止,这是一个非常简单的设置,只需一个捆绑.

BundleConfig.cs

public static void RegisterBundles(BundleCollection bundles)
{
    bundles.Add(new ScriptBundle("~/bundles/send").Include(
        "~/scripts/GrowingInput.js", 
        "~/scripts/textboxlist/TextboxList.js",
        "~/scripts/textboxlist/TextboxList.Livesearch.js",
        "~/scripts/combobox/ui.combobox.js",
        "~/scripts/jquery-ui-timepicker.js",
        "~/scripts/msp.send.js"));
}
Run Code Online (Sandbox Code Playgroud)

Global.asax中

protected void Application_Start(object sender, EventArgs e)
{
    BundleConfig.RegisterBundles(BundleTable.Bundles);
}
Run Code Online (Sandbox Code Playgroud)

Send.aspx

<%: Scripts.Render("/bundles/send") %>
Run Code Online (Sandbox Code Playgroud)

这始终在Web浏览器中呈现为<script src="/bundles/send"></script>忽略在web.config中将debug设置为true还是false.

我已经尝试添加BundleTable.EnableOptimizations = false;到BundleConfig.cs以强制捆绑,但这没有任何区别.

希望得到以下工作,就像在MVC网站中一样(Microsoft文档似乎建议Web表单应该是相同的).

  1. 使用调试标志打开/关闭捆绑
  2. 附加缓存清除?v = xxx查询字符串以进行版本控制.

asp.net bundling-and-minification asp.net-optimization

1
推荐指数
1
解决办法
2486
查看次数