gpt4 book ai didi

c# - 什么是@context,为什么它是红色的?

转载 作者:行者123 更新时间:2023-12-03 21:17:03 26 4
gpt4 key购买 nike

我在 blazor 服务器端应用程序中使用 BlazoredTypeahead 组件,我想知道 @context 关键字的来源。

以下代码运行良好,但 VS 报告它无法解析符号“上下文”。自然,我很好奇它为什么起作用以及上下文来自哪里。

@inject IEquipmentService EquipmentService
@inject AppDataService AppDataService
<h3>ModelSelect</h3>

<BlazoredTypeahead SearchMethod="SearchModels"
@bind-Value="equipModel">
<SelectedTemplate>
@context.model
</SelectedTemplate>
<ResultTemplate>
@context.model (@context.model_desc)
</ResultTemplate>
</BlazoredTypeahead>

@if (equipModel != null)
{
<p>Selected model is: @equipModel.model</p>
}

@code {


private EquipModel equipModel;


private async Task<IEnumerable<EquipModel>> SearchModels(string searchText)
{
var result = await EquipmentService.SearchModels(AppDataService.CurrentContact, searchText);

return await Task.FromResult(result.ToList());
}


}

最佳答案

在组件中定义 RenderFragment 属性时,实际上定义了一个委托(delegate),该委托(delegate)封装了一个方法,该方法具有 T 类型的单个参数,例如:

RenderFragment<TItem> RowTemplate

当您像这样执行委托(delegate)时:
@foreach (var item in Items)
{
<tr>@RowTemplate(item)</tr>
}

您正在为项目列表中的每个项目调用委托(delegate),向委托(delegate)传递一个项目对象,例如 Pet 对象(请注意,这里委托(delegate)的类型说明符是通用的。 @context 是一个内部变量由 Blazor 提供,其中包含传递给委托(delegate)的值,例如:
<RowTemplate>
<td>@context.ID</td>
<td>@context.Name</td>
</RowTemplate>

注意:RowTemplate 元素的打开和关闭中的内容表示由 RowTemplate RenderFragment 委托(delegate)生成的内容片段......再次生成内容时,您将获取传递给委托(delegate)的值并使用它。如果值是 Pet 对象,例如,有两个字段,您可以使用 @context.Name 之类的表达式来访问字段的值。

请注意,有一种方法可以使用传递的对象的类型名称而不是使用@context,但这是另一回事。

but VS is reporting that it Cannot resolve symbol 'context'



这是一个警告,对吧?我没有检查您的代码,但在我看来,使用的类型说明符是泛型类型,VS 无法解析底层类型。在我的示例中,类型说明符是 TItem,但传递给 RenderFragment<TItem> RowTemplate 的项目列表的类型属性是 Pet 类型。

据我记得,以前泛型类型存在问题,您必须将底层类型传递给模板化组件......您必须像这样编写代码:

模板化组件的使用:

 <TableTemplate TItem="Pet" Items="pets">

</TableTemplate>

如您所见,我们分配了一个名为 "pets" 的 Pet 对象列表。到 Items 属性,但我们还必须指定列表中传递的对象的类型 ( TItem="Pet")。据我所知,这个问题已经解决了,也许BlazoredTypeahead的代码以前写过?

关于c# - 什么是@context,为什么它是红色的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59380015/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com