.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>
属性总是null
; ViewContext.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
标签有什么作用>
我正在学习如何使用 .NET Core 2.0,其中我需要能够使用的部分之一是视图组件。
我几乎完全弄明白了。我正在使用依赖注入将服务传递到我的 ViewComponent 构造函数中,然后将 TestItem
的列表传递给视图。
然而@model System.Collections.Generic.List<Common.TestItem>
属性总是null
; ViewContext.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
标签有什么作用>