尝试遵循此处的示例,但有一个更改-ViewComponent没有模型
https://www.learnrazorpages.com/razor-pages/view-components
作为测试,我在应用程序根目录中名为“ ViewComponents”的文件夹中创建了一个新的简单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>