c# - 为管理员用户角色呈现未 bundle 的 Assets

标签 c# asp.net asp.net-mvc bundle bundling-and-minification

我是否可以为“管理员”角色的用户呈现未 bundle 和未压缩的脚本和样式?

我已经搜索并找到了如何禁用 bundle

BundleTable.EnableOptimizations = ...

和缩小

foreach (Bundle bundle in bundles)
{
    bundle.Transforms.Clear();
}

在 Global.asax.cs Application_Start 中,但我希望此逻辑针对每个用户,而不是每个应用程序实例,因此它不应仅在应用程序启动时运行。

最佳答案

首先,除非通过调用 Scripts.Render() 或 Styles.Render() 方法将其包含在 View 中,否则不会加载包含在 BundleConfig 中的样式或脚本。默认情况下,这些方法是从 _Layout.schtml 页面 (Views/Shared) 调用的。

@Styles.Render("~/Content/css")
@Scripts.Render("~/bundles/modernizr")
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/bootstrap")

为管理区域创建不同的布局页面并加载所需的脚本和样式将是更好的选择。

也可以使用相同的方法 Scripts.Render() 从任何 .cshtml 文件( View )加载它们。在这种情况下,它会像,

@{
    if (User.IsInRole("Admin"))
    {
        //Update this portion with path of required bundles
        @Scripts.Render("~/bundles/jquery")
    }
    else
    {
        //Update this portion with path of required bundles
        @Scripts.Render("~/bundles/jquery")
        @Scripts.Render("~/bundles/jqueryval")
    }
}

以上代码段可以添加到_Layout 页面或任何其他页面。

如果要求是添加任何非 bundle 代码。只需使用脚本标签。看起来像这样:

@{
    if (User.IsInRole("Admin"))
    {
        //required script or style files
    }
    else
    {
        //To include unbundled and unminified scripts
        <script type="text/javascript" src="~/Scripts/jquery.validate.js"></script>
    }
}

关于c# - 为管理员用户角色呈现未 bundle 的 Assets ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25070857/

相关文章:

c# - C# 中的事务

javascript - 隐藏加载更多记录按钮 ASP.net MVC Ajax Javascript

css - 如何在我的 ASP 应用程序中也包含 Bootstrap 字体目录?

asp.net - 带有Linux Docker自动生成的 “Service '的ASP.NET无法构建:COPY失败:stat/var/lib/docker/tmp/docker-builder”

javascript - AJAX 调用在服务器端执行的顺序与客户端调用的顺序不同

c# - C# 编译器或 JIT 在什么级别优化应用程序代码?

c# - 方法参数和重载

c# - DatagridView Column.DataPropertyName 到数组元素?

asp.net - ASP.NET 的类似 Excel 的服务器端控件

c# - C# 引用的问题