如何管理多个(不同的)视图图层
我有一个网站(ASP.NET MVC),我想扩展到另一个类似的主题(如*-serverfault-superuser)。如何管理多个(不同的)视图图层
数据库层和控制器层对于这两个网站都是相同的。不同之处在于视图层,只是一些细节:徽标,主页和一些资源文件(部分)和CSS。
管理这种情况的最佳方法是什么?杰夫和他的团队如何实现这一目标?我的理想目标是拥有一个解决方案(Visual Studio解决方案),一个包含控制器和模型的项目,以及n个不同的项目:每个视图都有不同的项目。 (增加了这一行来澄清)
我完成这个简单地分支两个解决方案(与SVN或Mercurial),然后合并发布?
谢谢你们!
我们使用App_GlobalResources
文件夹来做到这一点
- App_GlobalResources文件\ ServerFault.resx
- App_GlobalResources文件\ *.resx
- App_GlobalResources文件\ Meta*.resx
与助手类:
public static class Resources
{
public static string TeamEmail { get { return GetString("TeamEmail"); } }
public static string GetString(string key)
{
return HttpContext.GetGlobalResourceObject(
GlobalApplication.CurrentSite.ToString(), key).ToString();
}
}
和它出现在像这样的视图:
<a href="mailto:<%= Resources.TeamEmail %>">contact us</a>
对于更多的总置换(例如,/ FAQ),我们有帮助的多个拷贝,象这样:
Faq-ServerFault.aspx
Faq-*.aspx
Faq-*Meta.aspx
构建为每个服务器适当地重命名文件。
(请注意,这些内容的看法,所以他们真的只是常见问题内容本身,母版页确定布局的其余部分)
你说你有一个网站,你想扩展它的另一个主题。我想你应该觉得这种方式:
- 你有web应用程序,做你的工作。
- 您对您为其部署一个网站是Web应用程序
- 现在你想用相同的功能(就像SO-SF)另一个Web应用,但不同的外观和感觉
- 我觉得你的任务只是配置你的Web应用程序看起来不一样,和一个单独的服务器上部署它
注: *这两个网站将是彼此独立的。他们不会有共同的数据! *如果您希望网站进行互动,最好让网络应用程序能够与其自身的其他实例进行交互,然后重新部署。
我希望我明白你问的是正确的,而且我写的内容会有所帮助。
干杯,JRH
我能想到的在做这个
两种方式,你可以有到Apache Web服务器或IIS的情况下,你的域名是不同的,店里的CSS,标识和其他UI可以存储在服务器中的东西。
如果您使用.net,我认为是因为您在讨论母版页而您的域没有区别,您可以添加一些逻辑到您的Web应用程序,以根据一些规则从一个模板切换到另一个模板用户名或个人资料。如果您使用的是.net,我认为您可以生成不同的皮肤并根据您必须实施的特定逻辑来分配它们。如果您使用的是其他语言,则还可以生成模板并根据您的规则进行切换。
希望这会有所帮助。
您的第二点问题是代码将充满如此多的if-else你几个月后将无法阅读和修改它....这不是一个可行的解决方案 – 2009-07-09 08:48:37
是的,这可能是正确的,但这样一来我几乎在复制整个视图(资源文件和模板),这听起来像代码重复... 我编辑了原始问题,我希望澄清 – 2009-07-09 08:54:56