如何管理多个(不同的)视图层

时间:2009-07-09 06:20:05

标签: asp.net-mvc modularity

我有一个网站(ASP.NET MVC),我想扩展到另一个类似的主题(如stackoverflow-serverfault-superuser)。

两个网站的数据库层和控制器层都相同。不同之处仅在于视图层,仅用于几个细节:徽标,母版页和一些资源文件(部分)和CSS。

管理这种情况的最佳方法是什么?杰夫和他的团队如何实现这一目标?

我的理想目标是拥有一个解决方案(Visual Studio解决方案),一个包含控制器和模型的项目,以及n个不同的项目:每个视图都有。 (添加此行以澄清

我完成了这两个解决方案(使用SVN或Mercurial),然后在发布时合并?

谢谢你们!

3 个答案:

答案 0 :(得分:2)

我可以用两种方式思考

  1. 你可能需要apache web服务器或IIS,以防你的域名不同,并存储可以存储在服务器中的css,logos和其他UI东西。

  2. 如果您使用的是.net,因为您正在讨论母版页,并且您的域名没有区别,您可以根据某些规则为您的网络应用添加一些逻辑,以便从一个模板切换到另一个模板比如用户名或个人资料。如果您正在使用.net,我认为您可以根据您必须实现的特定逻辑生成不同的皮肤并分配它们。如果您使用的是某种不同的语言,您还可以生成模板并根据您的规则进行切换。

  3. 希望这有帮助。

答案 1 :(得分:1)

我们使用App_GlobalResources文件夹来执行此操作

  • App_GlobalResources文件\ ServerFault.resx
  • App_GlobalResources文件\ StackOverflow.resx
  • App_GlobalResources文件\ MetaStackOverflow.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副本,如下所示:

  • Faq-ServerFault.aspx
  • Faq-StackOverflow.aspx
  • Faq-StackOverflowMeta.aspx

构建会为每个服务器重新命名文件。

(请注意,这些是内容视图,因此它们实际上只是faq CONTENT本身,主页面决定了布局的其余部分)

答案 2 :(得分:0)

您说您有一个网站,并且您希望将其扩展为另一个主题。我想你应该认为这是时尚:

  • 您有一个网络应用,可以帮助您完成工作。
  • 您有一个部署该网络应用
  • 的网站
  • 现在你想要另一个具有相同功能的webapp(就像SO-SF一样),但外观和感觉不同
  • 我认为您的任务只是将您的网络应用配置为不同,并将其部署在单独的服务器上

注意:  *这两个网站将相互独立。他们没有共同的数据!  *如果您希望网站进行交互,最好使网络应用程序能够与其他实例交互,然后重新部署。

我希望我理解你的要求是正确的,而且我所写的内容会有所帮助。

干杯,jrh