在Razorpages应用中使用ViewComponent而不使用模型吗?

尝试遵循此处的示例,但有一个更改-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>
santong126 回答:在Razorpages应用中使用ViewComponent而不使用模型吗?

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3165880.html

大家都在问