对于razorpages和viewcomponents仍然是新手,但是在asp.net上已经出现了好几次
不确定为什么我的viewcomponent没有填充其模型。
我注意到我做错了一件事,就是在顶部放置一个路由参数
例如。
sed
我知道(至少现在)不打算将ViewComponents直接作为端点路由,但是现在我很好奇,使用带有route属性的@page来防止模型绑定发生了什么?我只是通过反复试验才发现,删除它会使我的模型填充到ViewComponent中。
这是代码
ViewComponent
awk
View for ViewComponent, Default.html
@page "{handler?}"
CustomerListModel
public class TestViewComponent : ViewComponent
{
public async Task<IViewComponentResult> InvokeAsync(Data.CustomerListModel cust)
{
List<Data.CustomerListModel> clist = new List<Data.CustomerListModel>();
clist.Add(new Data.CustomerListModel() { Customer = "fred" });
clist.Add(new Data.CustomerListModel() { Customer = "wilma" });
var dlist = clist.AsEnumerable();
return View(dlist);
}
}
父视图, Index.cshtml
@page "{handler?}"
@using System.Collections.Generic
@addTagHelper *,TelerikAspnetCoreApp1
@model IEnumerable<Data.CustomerListModel>
<h1>Default</h1>
<h3>Machine name @Environment.MachineName</h3>
<ul>
@foreach (Data.CustomerListModel c in Model)
{
<li>@c.Customer</li>
}
</ul>