.net 如何在shared/components内的子文件夹下指定视图组件

li9yvcax  于 2022-11-19  发布在  .NET
关注(0)|答案(1)|浏览(186)

每当我试图从一个位于shared/components文件夹结构下的任意位置的razor页面中指定视图组件时,我都会收到一个错误。例如,shared/components/UserCRUD/{mycomponent}将无法工作。请参见下面的图片:
注意,我也用typeof()和nameof()尝试过这个方法,智能感知可以正确地识别子文件夹下的正确位置。

我的相关文件夹结构:

我正在使用的命名空间。请注意,我也尝试过用“ViewComponent”后缀来命名它。

最后是异常,最奇怪的是异常并不查看我交给它的路径,它完全忽略了UserCRUD。

k10s72fa

k10s72fa1#

您的文件夹设置与默认的视图位置格式不匹配。
即使调整这些似乎也不起作用-- * 或者至少我没有成功 *。
固定值和预定义的占位符({0}视图名称、{1}页面名称)的组合似乎不能给予预期的结果; Components段总是自动添加。
下面确实管用。
AdminDashboard/Index.cshtml中,包括UserTable组件,如下所示。

  • 您也可以保留当前通话,因为该通话似乎有效。*
@await Component.InvokeAsync("UserTable")

调整UserTable.cs中的UserTable组件,方法是返回相应视图的完整路径,即/Areas/Identity/Pages/Shared/Components/UserCRUD/UserTable/UserTable.cshtml

public class UserTable : ViewComponent
{
    public IViewComponentResult Invoke(string module)
        => View("/Areas/Identity/Pages/Shared/Components/UserCRUD/UserTable/UserTable.cshtml");
}

您必须对UserCRUD文件夹中的其他视图执行类似的操作。

相关问题