我还是 Razor 页面和视图组件的新手,但我已经在 ASP.NET 中遇到过几次。
我不确定为什么我的视图组件没有填充其模型。我注意到我做错的一件事是将路由参数放在顶部。例如,
@page "{handler?}"
我知道(至少现在)视图组件不打算作为端点直接路由到,但现在我很好奇使用@page
带有路由属性的 a 可以防止模型绑定发生什么?我只是通过试验/错误发现删除它可以让我的模型填充到视图组件中。
这是代码
视图组件
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);
}
}
ViewComponent 的视图,Default.html
@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>
客户列表模型
namespace TelerikAspNetCoreApp1.Data
{
public class CustomerListModel
{
public string Customer { get; set; }
}
}
父视图,Index.cshtml
<div>
@await Component.InvokeAsync("Test",new { Name = "tester123" })
</div>