在ASP.NET MVC中为不同用户加载不同主题或css文件的最佳实践

时间:2014-06-03 05:09:40

标签: asp.net asp.net-mvc themes asp.net-mvc-routing subdomain

有两个问题:

  1. 如何为同一域下的不同客户进行路由,例如 对于客户A,网址如下:http://cusA.mydomain.com 对于客户B,网址如下:http://cusB.mydomain.com

  2. 并根据不同的网址(以上网址)加载不同的主题。

  3. 对于问题1:我知道我们有子域概念,它谈论的更像是: www.mydomain.com/cusA和www.mydomain.com/cusB。 所以我不知道它是否能够在mydomain前面做子域

    对于问题2:如果问题1得到解决,那么我认为我可以通过使用ASP.NET MVC主题内容来读取和解析url并根据cusA或cusB部分加载不同的主题。

    在我的案例中,是否有人可以提供一些想法和技术?

    谢谢。

    更新

    尝试使用" Request.ApplicationPath"但是没有用。

    这是代码

    <h2>Site 2 Home Page</h2>
    
    <a href="/Home/Contact">Go to Contact</a>
    <label>The Application Path is @Request.ApplicationPath.Substring(1)</label>
    

1 个答案:

答案 0 :(得分:0)

我的回答不一定是最佳做法,而是我们如何在我们的产品中找到它。

我们有多个站点运行相同的应用程序二进制文件,但每个站点都位于服务器上的不同应用程序池中。每个Web共享都有一个与共享名称对应的配置和CSS文件。然后,我们根据服务器上的应用程序名称使用config-和CSS文件(即Request.ApplicationPath)。

在您的情况下,您将拥有一个名为CusA的Web共享和另一个名为CusB的Web共享。您将拥有分别名为CusA.css和CusB.css的CSS文件。然后,您可以根据应用程序的名称包含CSS文件...

包含样式表的示例可能如下:

<link href="<%=Request.ApplicationPath.Substring(1)%>.css" type="text/css" rel="stylesheet" />

如果网络共享的名称是“CusB”,那将链接到“CusB.css”。上面的代码片段需要作为样式包含在视图中,但您使用的视图引擎显然会对语法产生影响。