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

Asw*_*ith 55 asp.net asp.net-core-mvc

MVC 6引入了View组件,并表示它比部分视图更强大,更灵活.视图组件是否意味着替换部分视图?有什么区别以及每种实施需要什么样的情况?

Jal*_*ama 25

根据此链接 - https://docs.asp.net/en/latest/mvc/views/view-components

ASP.NET MVC 6的新增功能,视图组件(VC)与部分视图类似,但功能更强大.VC包括在控制器和视图之间发现的相同的关注点和可测试性优势.您可以将VC视为迷你控制器 - 它负责渲染块而不是整个响应.

因此它只是部分视图的增强,另一个区别是当您使用局部视图时仍然依赖于控制器而在View Component中您不需要控制器.因此存在分离的担忧.

ASP.NET View Components有一个详细信息. http://www.tugberkugurlu.com/archive/exciting-things-about-asp-net-vnext-series-mvc-view-components

  • 您可以直接从其他人调用(部分)视图,而无需使用任何控制器.看到这个链接:https://msdn.microsoft.com/en-us/library/system.web.mvc.html.renderpartialextensions.renderpartial%28v=vs.118%29.aspx所以我无法理解真正的优势组件视图:-( (3认同)
  • 局部视图不能有业务逻辑,而在视图组件中你可以有业务逻辑。 (2认同)

Kir*_*lla 7

您可能希望使用a ViewComponent而不是a 的示例PartialView:
您需要编写一堆业务逻辑,例如,您可能需要联系第三方Web服务并获取数据并对其执行某些操作然后显示此信息.

对于上面的场景,确定你可以在局部视图本身中编写C#代码,但它很难看,而且你希望代码是可测试的.因此,这是视图组件有用的地方,即您可以在视图组件中编写所有业务逻辑并返回视图(这是类型ViewViewComponentResult).

视图组件与子操作不同.

  • 你能解释一下ViewComponents与Child Actions的不同之处吗? (6认同)
  • 您不需要在视图中编写 C# 代码。部分视图也可以具有控制器操作.. (4认同)
  • 在 ASP.NET MVC Core 中,视图中有“@inject”和依赖注入。您可以将所有业务逻辑和第 3 方 Web 服务包装在一个界面中,并将其作为部分视图中的依赖项。这将为您提供与视图组件相同的良好分离且可测试的代码。那么到底有什么意义呢? (2认同)

Ale*_*scu 6

ViewComponent当您需要分部视图(需要在 _Layout 中调用模型)时,也会使用 s 。为了避免编写 C# 代码来在布局中创建模型,最好使用可以ViewComponent通过依赖注入来利用为应用程序配置的服务(与控制器相同)的服务。