RouteData属性重复

时间:2019-08-25 01:02:47

标签: asp.net-core-mvc asp.net-core-2.2

我注意到在ASP.NET Core 2.2中,我们可以使用以下命令从RouteData获取/设置ViewComponent

Microsoft.AspNetCore.Mvc.ViewComponent.ViewComponentContext.ViewContext.RouteData

如果所有这些操作都返回与Microsoft.AspNetCore.Mvc.ViewComponent.RouteData完全相同的数据,那么ViewContext.RouteData有什么意义?

1 个答案:

答案 0 :(得分:0)

当在viewComponent.cs中使用这两种方法时,这两种方法返回相同的数据,从它们的定义中可以看出,只有ViewComponentContext.ViewContext.RouteData可以用于单元测试,而ViewComponent.RouteData是只读的。

Microsoft.AspNetCore.Mvc.ViewComponent.ViewComponentContext.ViewContext.RouteData:

 //
    // Summary:
    //     Gets or sets the Microsoft.AspNetCore.Routing.RouteData for the current request.
    //
    // Remarks:
    //     The property setter is provided for unit test purposes only.
    public RouteData RouteData { get; set; }

Microsoft.AspNetCore.Mvc.ViewComponent.RouteData :(只读)

 //
    // Summary:
    //     Gets the Microsoft.AspNetCore.Mvc.ViewComponent.RouteData for the current request.
    public RouteData RouteData { get; }

不仅用于RouteData,而且其他属性,例如HttpContext也具有相同的配置。 ViewComponent依靠ViewComponentContext.ViewContext公开那些只读属性。

请参阅 How to unit test ViewComponent.Invoke()?