Все еще плохо знакомы с бритвенными страницами и компонентами представления, но несколько раз были вокруг блока с asp.net
Не уверен, почему у моего компонента представления нет заполненной его модели. Одна вещь, которую я заметил, что я сделал, что это неправильно, это поставить параметр маршрута наверхунапример.
@page "{handler?}"
Я знаю (теперь, по крайней мере), что ViewComponents не предназначены для прямой маршрутизации в качестве конечных точек, но теперь мне интересно, что делает использование @page с атрибутом route для предотвращения моделисвязывание происходит? Я только методом проб / ошибок обнаружил, что удаление этого позволяет моей модели заполняться внутри ViewComponent.
Вот код
ViewComponent
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>
CustomerListModel
namespace TelerikAspNetCoreApp1.Data
{
public class CustomerListModel
{
public string Customer { get; set; }
}
}
Родительский вид, Index.cshtml
<div>
@await Component.InvokeAsync("Test",new { Name = "tester123" })
</div>