asp.net-mvc - 在单页上组合有界上下文

标签 asp.net-mvc razor domain-driven-design

我正在开始一个大型项目,我想使用 DDD。主要问题是如何在不重复NH的数据和映射的情况下显示来自多个Bounded Context的数据。我观看了 Udi 关于复合应用程序的播客。他提到使用 Razor 部分来显示来自多个有界上下文的数据,但他没有提供任何详细信息。有人知道如何使用它或者有人知道其他方法吗?

最佳答案

Razor 的好处是它允许您拥有完全独立的 Controller ,负责渲染单个页面的部分内容(门户风格)。例如,在 Razor 主视图中:

<some_markup> New products </some_markup>

@{ Html.RenderAction("Get", "NewProducts"); }

<some_markup> Product ratings </some_markup>

@{ Html.RenderAction("Get", "ProductRatings"); }

其中 NewProductsControllerProductRatingsController 属于不同的限界上下文,如下所示:

public class NewProductsController {

    private readonly IProducts repository;

    public NewProductsController(IProducts repository) {
        ...
    }

    [ChildActionOnly]
    public ViewResult Get() {
        // load products from repository and
        // return corresponding ViewModel 
    }
}

public class ProductRatingsController {

    private readonly IProductRatings repository;

    public ProductRatingsController(IProductRatings repository) {
        ...
    }

    [ChildActionOnly]
    public ViewResult Get() {
        // load product ratings from repository and
        // return corresponding ViewModel 
    }
}

请注意,尽管 Controller 会在同一页面上显示数据,但它们彼此并不了解。可以使用 Composition Root 中的 DI 容器注入(inject)存储库。您的应用程序。

关于asp.net-mvc - 在单页上组合有界上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10911616/

相关文章:

c# - ASP.NET MVC5 从布局访问 ViewBag?

c# - MVC 表单无法发布对象列表

asp.net-mvc-3 - 在 MVC3 中创建默认站点页面标题

architecture - 如何在 DDD + CQRS + Event Sourcing 方法中处理业务规则?

c# - 内联辅助方法如何以及为何在运行时评估类型?

c# - 防伪 token 竞争条件

javascript - 动态追加 div 和类

javascript - 只有月份和年份的 ASP .NET MVC4 Datepicker

domain-driven-design - 偶尔连接CQRS系统

c# - 实现业务规则的规范模式