【问题标题】:C# Return Component View in Different ControllerC#在不同的控制器中返回组件视图
【发布时间】:2021-07-29 23:04:56
【问题描述】:

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

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

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

/控制器/CT40/CT40控制器

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

在 MaintenanceViewComponents.cs 我有:

[ViewComponent(Name = "Maintenance")]

当我以“维护”作为组件名称调用 GetComponentView 函数时,它可以工作。

但我想将 GetComponentView 函数移动到 HomeController。当我这样做时,它会返回

“System.InvalidOperationException:视图'组件/维护/默认'”

我已经尝试了所有我能想到的方法,同样的事情:

/CT04000/维护

/CT04000/组件/维护

/CT04000/Components/Maintenance/Default.cshtml

Views/CT04000/Components/Maintenance/Default.cshtml

每次都出现同样的错误。

知道我需要输入什么路径才能让 Homecontroller 查看: /Views/CT40/组件/维护?

【问题讨论】:

    标签: c# asp.net-core-viewcomponent


    【解决方案1】:

    我看错地方了。

    我试图将视图的路径放在 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”,效果很不错。

    【讨论】:

      猜你喜欢
      • 2020-02-18
      • 2016-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多