.NET Core 2.0 视图组件未填充 @Model 属性

.NET Core 2.0 View Component Not Populating @Model Property

我正在学习如何使用 .NET Core 2.0,其中我需要能够使用的部分之一是视图组件。

我几乎完全弄明白了。我正在使用依赖注入将服务传递到我的 ViewComponent 构造函数中,然后将 TestItem 的列表传递给视图。

然而@model System.Collections.Generic.List<Common.TestItem>属性总是nullViewContext.ViewData.Model 正确填充。

知道为什么吗?代码贴在下面。


服务

TestItemService class

public class TestItemService
    {
        public List<TestItem> GetItems()
        {
            return new List<TestItem>()
            {
                new TestItem(){ id=0, date=DateTime.Today.AddDays(-2), Name="TestItem1" },
                 new TestItem(){ id=1, date=DateTime.Today.AddDays(-4), Name="TestItem2" },
                  new TestItem(){ id=2, date=DateTime.Today.AddDays(3), Name="TestItem3" },
            };
        }
    }

依赖注入

Startup中class在ConfigureServices方法中:

services.AddScoped<TestItemService.TestItemService, TestItemService.TestItemService>();

ViewComponent

public class TestViewComponent : ViewComponent
{
    private readonly TestItemService.TestItemService service;
    public TestViewComponent(TestItemService.TestItemService context)
    {
        service = context;
    }


    public async Task<IViewComponentResult> InvokeAsync()
    {
        List<TestItem> items = await GetItemsAsync();
        return View("Default",items);
    }
    public Task<List<TestItem>> GetItemsAsync()
    {
        return service.GetItems().Where(i => i != null).ToAsyncEnumerable().ToList();
    }
}

查看

@page
@model System.Collections.Generic.List<Common.TestItem>




<h3>Priority Items</h3>
<ul>
    @foreach (var todo in (List<Common.TestItem>)ViewContext.ViewData.Model)
    {
        <li>@todo.Name</li>
    }
</ul>

我发现了问题。在我的视图组件 cshtml 文件中,我在顶部有 @page 标记,由于某种原因破坏了它。如果他们会解释 为什么 破坏了它,我会将接受的答案更改为其他人的答案。 @page 标签有什么作用>