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”并且工作起来很有魅力。
我有一个视图需要根据组件视图名称动态加载不同的组件视图。我正在使用 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”并且工作起来很有魅力。