Попытка следовать примеру здесь, но с одним изменением - без модели для ViewComponenthttps://www.learnrazorpages.com/razor-pages/view-components
В качестве теста я создаю новый простой видовой компонент в папке в корне приложения под названием «ViewComponents»
Вопросы:Требуется ли для ViewComponent модель? Мне не нужна модель в VC, потому что я намерен иметь два каскадных выпадающих списка, которые не зависят от каких-либо начальных данных, он будет выбирать свои собственные данные из метода в библиотеке классов.
namespace TelerikAspNetCoreApp1.ViewComponents
{
public class TestViewComponent : ViewComponent
{
public async Task<IViewComponentResult> InvokeAsync()
{
return View("Default"); // return View() also work?
}
}
}
Затем в папке «Страницы» я создаю путь «Компоненты / Тест» и размещаю представление для ViewComponent. Обратите внимание, я не хочу использовать модель.
@page "{handler?}"
<h1>Default</h1>
<h3>Machine name</h3>
<ul>
{
<li>@Environment.MachineName</li>
}
</ul>
Затем я хочу добавить ее на страницу Index.cshtml.
Я получаю исключение с жалобой на модель
InvalidOperationException: элемент модели, переданный в ViewDataDictionary, имеет тип 'TelerikAspNetCoreApp1.Pages.IndexModel', но для этого экземпляра ViewDataDictionary требуется модельэлемент типа 'TelerikAspNetCoreApp1.Pages.Components.Test.Pages_Components_Test_Default'.
@page
@model IndexModel
@{
ViewData["Title"] = "Home Page";
}
@using TelerikAspNetCoreApp1.Data
@using Kendo.Mvc.UI
@inject Microsoft.AspNetCore.Antiforgery.IAntiforgery Xsrf
@Html.AntiForgeryToken()
<div>
@await Component.InvokeAsync("Test")
</div>
<script>
function forgeryToken() {
return kendo.antiForgeryTokens();
}
</script>