捆绑多租户网站的多个css文件?

时间:2014-01-28 16:15:41

标签: css asp.net-mvc less bundle multi-tenant

我们的asp.net mvc应用程序目前对我们所有的租户都有一种风格 我们希望转移到一个系统,根据租户,使用不同的css(实际上是一个变量较小的文件) 该文件的路径可预测为~\content\[tenantName]\style.css

配置[numberOfTenants]捆绑包的唯一方法是:

<%= Styles.Render("~/content/[tenantName]/style.css")%>

有没有办法从同一个虚拟路径提供正确的css,记住命名约定,而不必配置单独的bundle而不破坏缓存?

2 个答案:

答案 0 :(得分:1)

你需要一个三管齐下的方法来在ASP.NET MVC中进行多租户,但它是可能的(我自己做过)。

  • 编写自己的视图引擎,考虑客户端。您可以从许多地方获取客户端信息,但我通常只使用主机名。 www.client.com == client-1。

  • 创建帮助程序方法以标识客户端。就像我上面说的那样,使用主机名称它应该非常好,但如果你需要测试,也可以自己硬编码客户端。

  • 创建一致的文件夹结构来存储图像,CSS和视图。

自定义视图引擎将成为您成功的途径。

答案 1 :(得分:-3)

使用ResolveClientUrl!

   //Returns: ../HomePage.aspx
String ClientURL = ResolveClientUrl("~/HomePage.aspx");

//Returns: /HomePage.aspx
String RegURL = ResolveUrl("~/HomePage.aspx");

//Returns: C:\inetpub\wwwroot\MyProject\HomePage.aspx
String ServerMappedPath = Server.MapPath("~/HomePage.aspx");

//Returns: ~/HomePage.aspx
String appRelVirtPath = AppRelativeVirtualPath;

//Returns: http://localhost:4913/
String baseUrl = Request.Url.GetLeftPart(UriPartial.Authority) + Request.ApplicationPath;

//Returns: "http://localhost:4913/HomePage.aspx"
String absUri = Request.Url.AbsoluteUri;