ASP.NET MVC:每个域的自定义设计

时间:2010-04-20 08:44:48

标签: asp.net-mvc

我正在考虑ASP.NET MVC 2项目,它应该在不同的标记或页面设计中显示相同的域模型(具有不同的数据)(由url域选择)。

我不确定使用哪一个:

  1. 每个唯一域的一组视图+一个默认值?
  2. 使用区域?
  3. 还有其他想法吗?
  4. 你会怎么做? 谢谢。

    修改

    我终于拿出了自己的解决方案。特性:

    • .NET 4 MVC 2
    • 框架,库:NCommon,EF4,MVCContrib,AntiXSS
    • 每个域加载配置(模块)
    • 语言,本地化,主题

    有很多事情要做,但我可以分享我的代码来改进它。发送电子邮件至skorunka@genitor.cz

1 个答案:

答案 0 :(得分:1)

我建议专门通过Rob Ashton的这篇series帖子

  1. http://codeofrob.com/archive/2009/11/01/dynamically-switching-between-master-pages-in-asp.net-mvc.aspx
  2. http://codeofrob.com/archive/2010/02/08/multi-tenancy-in-asp.net-mvc-views.aspx
  3. 但是,我认为您可能需要重写视图名称的解决方法。我认为Rob的帖子中提到的关键点是视图应该以相反的顺序解析和定位,即始终查找为当前站点定义的视图,并遍历到存在完整视图集的根。

      

    每个唯一域的视图集+一个   默认?

    是的 - 请注意,您可能只需要域的特定视图

      

    使用区域?

    不 - 我不建议在这种情况下使用区域拆分你的应用程序。我假设你的意思是每个域的一个区域。您仍然应该根据功能将应用拆分为区域,并使用解析视图的相同想法。

      

    还有其他想法吗?

    使用Rob的想法绝对是一个不错的选择。但是,我会考虑您希望有多少域(网站)具有不同的视图。我在考虑这个案例(不是非常YAGNI),每个站点的每个区域都有不同的视图要求。所以我需要一个深思熟虑的计划来存储视图。可能的目录结构的示例。

    -- Default
       -- Area1  // Site2's views rendered from here
          --Views
          --Shared
       -- Area2  
          --Views
          --Shared
       ...
    -- Site 1 // all views from Site 1 are rendered from this folder
       -- Area1  
          --Views
          --Shared
       -- Area2  
          --Views
          --Shared
    -- Site 2 // only view for Area2 are rendered from here
       -- Area2  
          --Views
          --Shared