我正在设计一个企业Web应用程序,该应用程序将具有单个代码库和单个数据库(基于租户的数据库不需要任何灵活性),但基于客户端的不同演示文稿。我们可能有3到4个不同的客户端(网站)使用相同的核心逻辑和骨架,但客户端特定的页眉,页脚,图像,CSS等。我需要一个多表示解决方案,然后一个完整的承诺多租户。我在网上看到的大部分样本都面向完全成熟的多租户,我认为我不需要那些复杂的东西。我在这里找到了一些非常有用的信息:
http://jasonjano.wordpress.com/2010/02/22/multi-presentation-websites-for-c/
正如上面的链接所示,我能够根据我的web.config文件中的以下配置,根据请求的域识别并获取唯一ID:
<configuration>
<appSettings>
<add key="MySite1.MyDomain.com" value="1"/>
<add key="www.MySite1.MyDomain.com" value="1"/>
<add key="MySite2.MyDomain.com" value="2"/>
<add key="localhost" value="1"/>
</appSettings>
</configuration>
在此之后,如何根据ID动态选择我的母版页,图像和CSS文件?此外,我将从数据库填充“CustomAppSettings”类(如文章中所示),是否可以将其设置为静态,以便可以在不同的层中访问它?否则推荐的方式是什么?
非常感谢您的建议。
答案 0 :(得分:0)
很高兴看到你正在使用那篇文章。关于答案,我通常使用继承自system.web.ui.page的自定义页面类。在自定义页面类的page_init中,您可以设置母版页等。
像(伪代码)
之类的东西class MyCustomPage : System.Web.UI.Page
{
public void Page_Init(object sender, eventargs e) {
this.MasterPageFile = CurrentSettings.MasterPageFile <Or however you are getting your masterpage file>
}
然后,在您的页面中,继承MyCustomPage类而不是System.Web.UI.Page。
祝你好运
答案 1 :(得分:0)
This might help you with detecting the 'tenant' from the incoming request.
我不会通过Html Helpers / Patrial Views(或两者)动态地选择不同的MasterPage文件,而是rather render different content out到MasterPage。