【问题标题】:Dynamic loading bundle at runtime MVC5 razor view在运行时动态加载包 MVC5 剃须刀视图
【发布时间】:2016-08-06 00:40:40
【问题描述】:

如果登录用户是管理员,我想在捆绑包中加载一些 js。 像这样的:

@if (@ViewBag.IsAdmin)
{
    @section Scripts {
        @Scripts.Render("~/bundles/admin")
    }
}

如果他是管理员,我希望“脚本”部分能够填写。但是,在客户端,我看不到“~/bundles/admin”包中的 js。

我更改了我的代码,但没有使用@section:

@if (@ViewBag.IsAdmin)
{
    @Scripts.Render("~/bundles/admin")
}

但同样的问题。看起来捆绑包无法在运行时动态加载。

我可以通过它的唯一方法:

@if (@ViewBag.IsAdmin)
{
    <script src="~/Scripts/admin.js"></script>
}

这意味着直接加载js而不是把它放在bundle中。 所以我的问题是:无论如何我可以动态加载捆绑包吗?

【问题讨论】:

  • 显示如何定义捆绑包。捆绑脚本是否在没有 if 条件的情况下加载?
  • 它在没有 if 条件的情况下加载,我将在问题的后面更新我的包定义以获得更清晰的含义。
  • 你确定ViewBag.IsAdmin 是真的吗?尝试调试此代码。
  • 我调试了代码并确保它通过了生成包的行。我不知道为什么,但我只是尝试重新启动 Visual Studio,现在可以了 @.@ 抱歉我的转储问题 @.@

标签: asp.net-mvc razor asp.net-mvc-5 bundle


【解决方案1】:

我这样做,它对我有用:

@section Styles {
    @Styles.Render("~/bundles/dataTablesStyles")
    @if (Model.isReportAdmin){@Styles.Render("~/bundles/X-editablecss")}
}
@section Scripts {
    @Scripts.Render("~/bundles/highcharts")
    @Scripts.Render("~/bundles/dataTablesScripts")
    @if (Model.isReportAdmin){@Scripts.Render("~/bundles/X-editablejs")}
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-04
    • 1970-01-01
    • 2020-12-02
    • 2017-02-21
    • 2018-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多