MVC 6 视图组件与部分视图:有什么区别?什么时候应该使用它们?

MVC 6 View Components vs. Partial Views: What is the difference? When should each be used?

MVC 6 引入了视图组件,据说它比部分视图更强大和灵活。视图组件是用来替换部分视图的吗?每种实现方式有什么区别以及需要什么样的情况?

根据这个 link- https://docs.asp.net/en/latest/mvc/views/view-components

New to ASP.NET MVC 6, view components (VCs) are similar to partial views, but they are much more powerful. VCs include the same separation-of-concerns and testability benefits found between a controller and view. You can think of a VC as a mini-controller—it’s responsible for rendering a chunk rather than a whole response.

所以它只是局部视图的增强,另一个区别是当你使用局部视图时你仍然依赖于控制器,而在视图组件中你不需要控制器。所以有一个关注点分离。

ASP.NET 视图组件有详细信息 post。 http://www.tugberkugurlu.com/archive/exciting-things-about-asp-net-vnext-series-mvc-view-components

您可能希望使用 ViewComponent 而不是 PartialView 的示例:
您需要编写一堆业务逻辑,例如您可能需要联系第 3 方 Web 服务并获取数据并对其进行处理,然后显示此信息。

对于上述场景,您当然可以在局部视图本身中编写 C# 代码,但它很丑陋,而且您希望代码是可测试的。所以这就是视图组件有用的地方,即您可以在视图组件和 return 视图中编写所有业务逻辑(这是 ViewViewComponentResult 类型)。

视图组件与子操作不同。

ViewComponents 也用于需要局部视图时,这需要在 _Layout 中调用模型。为避免编写 C# 代码在布局中创建模型,最好使用 ViewComponent 可以利用为应用程序配置的服务,与控制器一样,通过依赖注入。