Использование ViewComponent в приложении Razorpages без модели? - PullRequest
0 голосов
/ 04 ноября 2019

Попытка следовать примеру здесь, но с одним изменением - без модели для 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>
...