razor - 捆绑脚本未渲染

标签 razor asp.net-mvc-4 bundling-and-minification

我在使用 ASP .NET 进行脚本捆绑和缩小时遇到问题 我已经尝试了互联网上找到的所有流行解决方案,但仍然遇到同样的问题。

我的BundleConfig.cs看起来像

namespace MYPROJ{
public class BundleConfig
{
    public static void AddDefaultIgnorePatterns(IgnoreList ignoreList)
    {
        if (ignoreList == null)
            return;
        ignoreList.Ignore("*.intellisense.js");
        ignoreList.Ignore("*-vsdoc.js");
        ignoreList.Ignore("*.debug.js", OptimizationMode.WhenEnabled);
        ignoreList.Ignore("*.min.js", OptimizationMode.WhenDisabled);
        ignoreList.Ignore("*.min.css", OptimizationMode.WhenDisabled);
    }

    public static void RegisterBundles(BundleCollection bundles)
    {
        bundles.IgnoreList.Clear();
        AddDefaultIgnorePatterns(bundles.IgnoreList);

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

…
…

        //bundles.Add(new ScriptBundle("~/Scripts").Include("~/Scripts/jquery.unobtrusive-ajax.min.js", "~/Scripts/kendoui/kendo.all.min.js", "~/Scripts/kendoui/kendo.combobox.min.js", "~/Scripts/kendoui/kendo.grid.min.js"));
        //bundles.Add(new ScriptBundle("~/Scripts").Include("~/Scripts/kendoui/kendo.all.min"));
        //bundles.Add(new ScriptBundle("~/Scripts").Include("~/Scripts/kendoui/kendo.combobox.min"));
        //bundles.Add(new ScriptBundle("~/Scripts").Include("~/Scripts/kendoui/kendo.grid.min.js"));            
        bundles.Add(new ScriptBundle("~/Scripts").IncludeDirectory("~/Scripts", "*.js").IncludeDirectory("~/Scripts/kendoui", "*.js"));

        ……
        BundleTable.EnableOptimizations = true;
    }
}
}

在主视图中:

@Scripts.Render("~/Scripts")

现在,当我运行这一切之后,我得到了这个标签:

<script src="/Scripts?v=ZnxC8dcoc3fJ-hfKQHLiTe19PjJFHwPhwHPUncuBtzE1"></script>

使用 chrome 代码检查器后,我发现上述资源的状态代码是 Status Code: 302 Found 对于 Scripts/ 来说,它是 Status代码:404 未找到

而且我也无法通过在查看源中单击脚本文件来访问它,因此看起来没有加载任何内容,但所有文件和目录都正确放置。 仅供引用,我的 styleSheets 捆绑工作正常。

请帮忙谢谢。

最佳答案

您不能为您的包指定一个与现有目录名称相同的名称。重命名该包或添加 /js 以使其正常工作:

bundles.Add(new ScriptBundle("~/Scripts/js").IncludeDirectory("~/Scripts", "*.js").IncludeDirectory("~/Scripts/kendoui", "*.js"));

@Scripts.Render("~/Scripts/js")

任何不存在的其他名称也可以使用,例如

 bundles.Add(new ScriptBundle("~/ScriptMonkey").IncludeDirectory("~/Scripts", "*.js").IncludeDirectory("~/Scripts/kendoui", "*.js"));

...假设您没有 /ScriptMonkey 目录。

关于razor - 捆绑脚本未渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15540528/

相关文章:

asp.net-mvc - 将选中的复选框发布到 Controller 操作,而不使用 Html.CheckboxList 等 HTML 助手

c# - ASP.NET MVC 3 是否已准备好用于业务应用程序

asp.net - 如何将 reCAPTCHA ASP.NET 插件放入 Razor (CSHTML) 文件中?

asp.net - 对 asp.net 包请求禁用 session 访问

asp.net-4.0 - 我们可以在现有的 ASP.NET 4 网站上使用 Razor 吗?

asp.net-mvc-4 - ServiceStack 禁用 HttpRequestValidation

c# - ASP.Net MVC 选择值类型列表

azure - MVC4 Azure 发布错误 - 无法加载文件或程序集 'System.Web.Razor'

asp.net - 让 Styles.Render() 保留 Razor 模板的缩进?

asp.net - 优化了从网站请求时返回 404 的 bundle