3 回答
TA贡献1817条经验 获得超6个赞
将 Razor 页面加载为部分视图似乎是不可能的,请参阅此处。Razor 页面不能用作View Components的替代品。按照以下步骤创建一个PartialDelegatesViewComponent,它可以做你想做的事情。
1.创建ViewComponens文件夹并在文件夹中添加PartialDelegates.cs类
public class PartialDelegates:ViewComponent
{
public IViewComponentResult Invoke()
{
List<string> Avengers = new List<string>();
Avengers.AddRange(new[] { "Spiderman", "Iron Man", "Dr. Stange", "The Hulk" });
return View(Avengers);
}
}
2.Default.cshtml添加到路径 /Views/Shared/Components/PartialDelegates/Default.cshtml(如果文件夹不存在则创建)
@model List<string>
<h1>Default</h1>
<partial name="_PartialDelegatesView" model="Model" />
3.在你的 Create.cshtml 中,调用视图组件
@await Component.InvokeAsync("PartialDelegates")
TA贡献1798条经验 获得超3个赞
将 Razor 页面加载为部分视图似乎是不可能的,请参阅此处。Razor 页面不能用作View Components的替代品。按照以下步骤创建一个PartialDelegatesViewComponent,它可以做你想做的事情。
1.创建ViewComponens文件夹并在文件夹中添加PartialDelegates.cs类
public class PartialDelegates:ViewComponent
{
public IViewComponentResult Invoke()
{
List<string> Avengers = new List<string>();
Avengers.AddRange(new[] { "Spiderman", "Iron Man", "Dr. Stange", "The Hulk" });
return View(Avengers);
}
}
2.Default.cshtml添加到路径 /Views/Shared/Components/PartialDelegates/Default.cshtml(如果文件夹不存在则创建)
@model List<string>
<h1>Default</h1>
<partial name="_PartialDelegatesView" model="Model" />
3.在你的 Create.cshtml 中,调用视图组件
@await Component.InvokeAsync("PartialDelegates")
TA贡献1998条经验 获得超6个赞
您需要删除@page
指令_PartialDelegates.cshtml
以使局部视图正常工作。但问题是_PartialDelegatesModel
OnGet
永远不会调用方法,因此Avengers
不会实例化列表。
似乎不可能将这样的剃须刀页面用作局部视图,只有常规的剃须刀视图适合此目的。如果您需要在呈现页面之前实例化一些值,那么根据文档(“重要”部分)
如果您需要执行代码,请使用视图组件而不是局部视图。
- 3 回答
- 0 关注
- 82 浏览
添加回答
举报