首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在ASP.NET MVC4Beta中禁用Javascript/CSS缩小

如何在ASP.NET MVC4Beta中禁用Javascript/CSS缩小
EN

Stack Overflow用户
提问于 2012-02-21 14:18:36
回答 8查看 19.4K关注 0票数 16

我只是在试用Javascript MVC4,但是我不知道如何禁用ASP.NET /CSS缩小功能。特别是对于开发环境,这对调试有很大的帮助。我想这会是web.config的一个转变,但是由于ASP.NET MVC4目前还处于测试阶段,所以没有太多的信息。如果有人可以帮助或指出正确的博客帖子等,我将不胜感激。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2012-03-17 18:27:18

在Global.asax.cs中

代码语言:javascript
复制
#if DEBUG
        foreach (var bundle in BundleTable.Bundles)
        {
            bundle.Transform = new NoTransform();
        }
#endif
票数 18
EN

Stack Overflow用户

发布于 2012-02-22 16:36:12

另一种选择是创建一个HTML Helper,您可以使用它来构建脚本和链接标记。以下是我为Javascript实现的内容,也可以为CSS实现:

代码语言:javascript
复制
public static class BundleHelper
    {
        public static MvcHtmlString JsBundle(this HtmlHelper helper, string bundlePath)
        {
            var jsTag = new TagBuilder("script");
            jsTag.MergeAttribute("type", "text/javascript");

            return ReferenceBundle(helper, bundlePath, jsTag);
        }

        public static MvcHtmlString ReferenceBundle(this HtmlHelper helper, string bundlePath, TagBuilder baseTag)
        {
            var httpContext = helper.ViewContext.HttpContext;
            var urlHelper = new UrlHelper(helper.ViewContext.RequestContext);

            Bundle bundle = BundleTable.Bundles.GetBundleFor(bundlePath);
            var htmlString = new StringBuilder();

            if (bundle != null)
            {
                var bundleContext = new BundleContext(helper.ViewContext.HttpContext, BundleTable.Bundles, urlHelper.Content(bundlePath));

                if (!httpContext.IsDebuggingEnabled)
                {
                    baseTag.MergeAttribute("href", System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl(bundlePath));
                    return new MvcHtmlString(baseTag.ToString());
                }

                foreach (var file in bundle.EnumerateFiles(bundleContext))
                {
                    var basePath = httpContext.Server.MapPath("~/");
                    if (file.FullName.StartsWith(basePath))
                    {
                        var relPath = urlHelper.Content("~/" + file.FullName.Substring(basePath.Length));
                        baseTag.MergeAttribute("href", relPath, true);
                        htmlString.AppendLine(baseTag.ToString());
                    }
                }

            }

            return new MvcHtmlString(htmlString.ToString());
        }
    }

现在你要做的就是在你的视图中调用它:

代码语言:javascript
复制
<head>
    <meta charset="utf-8" />
    <title>@ViewBag.Title - My ASP.NET MVC Application</title>
    <link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" />
    <link href="~/Content/css" rel="stylesheet" type="text/css" />
    <link href="~/Content/themes/base/css" rel="stylesheet" type="text/css" />
    @Html.JsBundle("~/scripts/js")
    <meta name="viewport" content="width=device-width" />
</head>

它会将脚本呈现为单独的引用,或者根据web.config中的调试设置使用新的捆绑/缩减功能。如果你想看更多的例子,在创建我的帮助器时,我使用了一些来自http://codecutout.com/resource-minify-bundling的代码作为参考。它们的帮助器写得更好一些,当提供无效参数时抛出异常,等等。我只是还没来得及清理我的房间。

票数 4
EN

Stack Overflow用户

发布于 2012-03-05 12:46:44

在Global.asax中调用EnableDefaultBundles()之后,您可以这样做...

代码语言:javascript
复制
        if ( ... running in development environment ...)
        {
            var registeredBundles = BundleTable.Bundles.GetRegisteredBundles();
            foreach (var bundle in registeredBundles)
            {
                if (bundle.Transform is System.Web.Optimization.JsMinify)
                    bundle.Transform = new NoTransform();
            }
        }

不是很漂亮(修改系统设置的状态),但它的代码比所有其他建议少得多,仍然允许您使用标准的捆绑行为,并且它不涉及对视图的任何更改。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9373071

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档