0

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

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

处理这种情况的最佳方法是什么?Jeff 和他的团队是如何做到的?

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

我只需将这两个解决方案(使用 SVN 或 Mercurial)分支,然后在发布时合并?

多谢你们!

4

3 回答 3

2

我可以用两种方式思考

  1. 如果您的域不同并且存储 css、徽标和其他可能存储在服务器中的 UI 内容,您可能必须使用 apache Web 服务器或 IIS。

  2. 如果您使用的是.net,我认为这是因为您在谈论母版页并且您的域没有什么不同,您可以向您的网络应用程序添加一些逻辑,以根据用户名或配置文件等一些规则从一个模板切换到另一个模板。如果您使用.net,我认为您可以生成不同的皮肤并根据您必须实现的某些逻辑分配它们。如果您使用一些不同的语言,您还可以生成一个模板并根据您的规则进行切换。

希望这可以帮助。

于 2009-07-09T06:35:30.263 回答
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

该构建会为每个服务器适当地重命名文件。

(请注意,这些是内容视图,因此它们实际上只是常见问题内容本身,母版页决定了其余的布局)

于 2009-07-10T05:44:43.990 回答
0

你说你有一个网站,你想将它扩展到另一个主题。我想你应该认为是这种时尚:

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

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

我希望我能正确理解您的要求,并且我所写的内容会有所帮助。

干杯,jrh

于 2009-07-09T06:29:51.787 回答