如何使用 Class/IViewComponentResult return 正确的布局部分视图而不使用 Class/Method/~/view/shared/_pg.cshtml .Net Core 获取路由
How to return a correct layout partial view with Class/IViewComponentResult and not get the route with Class/Method/~/view/shared/_pg.cshtml .Net Core
在我的 _pageLayout 中,我尝试像这样进行局部视图
@{Layout = "~/Views/Shared/_Layout.cshtml";}
<div> @await Component.InvokeAsync("_PageMenu") </div>
我创建了一个名为 Component 的文件夹和一个名为 _PageMenuViewComponent
的 Class
public class _PageMenuViewComponent:ViewComponent
{
private readonly SYS_menu_mstr_Repo _sys_menu_mstr_repo;
public _PageMenuViewComponent(SYS_menu_mstr_Repo sys_menu_mstr_repo)
{
_sys_menu_mstr_repo = sys_menu_mstr_repo;
}
public IViewComponentResult Invoke()
{
var menuList = _sys_menu_mstr_repo.Get_ALL_Menu_Mstr();
return View("~/View/Shared/_PageMenu.cshtml", menuList);
}
}
并且总是得到这样的路线:
InvalidOperationException: The view 'Components/_PageMenu/~View/Shared/_PageMenu.cshtml' was not found. The following locations were searched:
~View/Shared/_PageMenu.cshtml
AspNetCore.Views_Shared__PageLayout.ExecuteAsync() in _PageLayout.cshtml
+
@await Component.InvokeAsync("_PageMenu")
我不想在 startup.cs 中更改 MapControllerRoute
因为它只是用于布局的局部视图。
以后在Controller中写东西的时候会用到
我如何 return 我 class/method 中模型的准确视图?
在 Shared 文件夹中,您必须创建一个 Components 文件夹,然后是 _PageMenu 文件夹。将部分视图放在那里。
在 Controllers 文件夹中创建 class
[ViewComponent(Name = "_PageMenu")]
public _PageMenuViewComponent(SYS_menu_mstr_Repo sys_menu_mstr_repo)
{
.....
return View("_PageMenu", menuList);
}
在我的 _pageLayout 中,我尝试像这样进行局部视图
@{Layout = "~/Views/Shared/_Layout.cshtml";}
<div> @await Component.InvokeAsync("_PageMenu") </div>
我创建了一个名为 Component 的文件夹和一个名为 _PageMenuViewComponent
的 Classpublic class _PageMenuViewComponent:ViewComponent
{
private readonly SYS_menu_mstr_Repo _sys_menu_mstr_repo;
public _PageMenuViewComponent(SYS_menu_mstr_Repo sys_menu_mstr_repo)
{
_sys_menu_mstr_repo = sys_menu_mstr_repo;
}
public IViewComponentResult Invoke()
{
var menuList = _sys_menu_mstr_repo.Get_ALL_Menu_Mstr();
return View("~/View/Shared/_PageMenu.cshtml", menuList);
}
}
并且总是得到这样的路线:
InvalidOperationException: The view 'Components/_PageMenu/~View/Shared/_PageMenu.cshtml' was not found. The following locations were searched:
~View/Shared/_PageMenu.cshtml
AspNetCore.Views_Shared__PageLayout.ExecuteAsync() in _PageLayout.cshtml
+
@await Component.InvokeAsync("_PageMenu")
我不想在 startup.cs 中更改 MapControllerRoute 因为它只是用于布局的局部视图。
以后在Controller中写东西的时候会用到
我如何 return 我 class/method 中模型的准确视图?
在 Shared 文件夹中,您必须创建一个 Components 文件夹,然后是 _PageMenu 文件夹。将部分视图放在那里。
在 Controllers 文件夹中创建 class
[ViewComponent(Name = "_PageMenu")]
public _PageMenuViewComponent(SYS_menu_mstr_Repo sys_menu_mstr_repo)
{
.....
return View("_PageMenu", menuList);
}