加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 根据请求域捆绑CSS文件?

发布时间:2020-12-16 06:33:00 所属栏目:asp.Net 来源:网络整理
导读:我有一个多租户应用程序,我试图确定最简单的方法来控制哪些CSS文件捆绑基于任何传入请求的URL. 我认为我可以在RegisterBundles()中有一些条件逻辑,它将Url作为字符串,并相应地捆绑: public static void RegisterBundles(BundleCollection bundles,string te
我有一个多租户应用程序,我试图确定最简单的方法来控制哪些CSS文件捆绑基于任何传入请求的URL.

我认为我可以在RegisterBundles()中有一些条件逻辑,它将Url作为字符串,并相应地捆绑:

public static void RegisterBundles(BundleCollection bundles,string tenant = null) {
     if (tenant == "contoso"){
           bundles.Add(new StyleBundle("~/contoso.css") 
     }
}

但我不知道如何将字符串传递给RegisterBundles,即使它是可能的,也不是正确的解决方案.这里的任何帮助都会很棒.

解决方法

现在无法在RegisterBundles中执行此操作.动态生成每个请求的bundle内容将阻止ASP.net缓存缩小的CSS(它在HttpContext.Cache中缓存).

您可以做的是在RegisterBundles中为每个租户创建一个捆绑包,然后在视图中选择适当的捆绑包.

视图中的示例代码:

@Styles.Render("~/Content/" + ViewBag.TenantName)

编辑:

正如您所说,在ViewBag中设置TenantName是有问题的,因为您必须为每个视图执行此操作.解决此问题的一种方法是创建一个静态函数,如Styles.Render(),它根据当前租户选择正确的包名称.

public static class TenantStyles
{
    public static IHtmlString Render(params string[] paths)
    {
        var tenantName = "test"; //get tenant name from where its currently stored
        var tenantExtension = "-" + tenantName;
        return Styles.Render(paths.Select(i => i + tenantExtension).ToArray());
    }
}

用法

@TenantStyles.Render("~/Content/css")

捆绑名称需要采用此格式{bundle} – {tenant},如?/ Content / css-test.但是你可以改变课程的格式.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读