C# Return 不同控制器中的组件视图

C# Return Component View in Different Controller

我有一个视图需要根据组件视图名称动态加载不同的组件视图。我正在使用 C# 中的函数来实现此目的:

public ViewComponentResult GetComponentView(string componentName, int id)
{
   return ViewComponent(componentName, new { id = id });
}

这是在控制器 CT40 中。所以文件结构是:

/Controllers/CT40/CT40Controller

/Views/CT40/Components/Maintenance/Default.cshtml /Views/CT40/Components/Maintenance/MaintenanceViewComponents.cs

里面MaintenanceViewComponents.cs我有:

[ViewComponent(Name = "Maintenance")]

当我使用“Maintenance”作为组件名称调用 GetComponentView 函数时,发现它起作用了。

但我想将GetComponentView 功能移至HomeController。当我这样做时,它 returns

"System.InvalidOperationException: 视图 'Components/Maintenance/Default'"

能想到的路我都试过了,都是一样的:

/CT04000/Maintenance

/CT04000/Components/Maintenance

/CT04000/Components/Maintenance/Default.cshtml

观看次数/CT04000/Components/Maintenance/Default.cshtml

每次都出现同样的错误。

知道我需要输入什么路径才能让 Homecontroller 查看: /Views/CT40/Components/Maintenance?

我看错地方了。

我试图将视图的路径放在 componentName 中:

public ViewComponentResult GetComponentView(string componentName, int id)
{
   return ViewComponent(**componentName**, new { id = id });
}

但是路径需要在语句中去

return View(path, model);

在文件 MaintenanceViewComponents.cs.

我添加了路径“~/Views/CT04000/Components/Maintenance/Default.cshtml”并且工作起来很有魅力。