gpt4 book ai didi

MudBlazor MudAutocomplete - 如何在列表中显示 'name',但绑定(bind)一个 Id?

转载 作者:行者123 更新时间:2023-12-05 09:28:13 29 4
gpt4 key购买 nike

我的模型是这样的

public partial class EditModel
{
public int Id { get; set; }
...

public string Item { get; set; }
}

我的 SearchItems 方法 header 如下所示

protected async Task<IEnumerable<ListItem>> SearchItems(string value)

返回这些的“列表”

public partial class ListItem
{
public string Id { get; set; }
public string Name { get; set; }
}

如何让我的 MudAutocomplete 显示名称,同时返回/绑定(bind) ID?

<MudAutocomplete T="ListItem" Label="Select item" @bind-Value="EditModel.Item"
Clearable="true"
MinCharacters="4" SearchFunc="@SearchItems"
ToStringFunc="@(i => i==null ? null : $"{i.Id} [{i.Name}]")"
SelectValueOnTab="true"/>

在@bind-Value 上,Visual Studio 显示此错误

...无法从“字符串”转换为“EditModel.Item”

最佳答案

我现在就是这样解决的......

我的 SearchItems 方法现在只返回一个字符串列表

protected async Task<IEnumerable<string>> SearchItems(string value)

我已将此属性放入 MudAutocomplete

ToStringFunc="@(i => ItemDisplay(i))" 

这是我的 ItemDisplay 方法

private string ItemDisplay(string itemId)
{
var item = ListItems.FirstOrDefault(i => i.Id == itemId);

return item == null ? "!Not Found!" : $"{item.Id} [{item.Name}]";
}

我必须将它添加到我的 ComponentBase 中,以“缓存”所有 ListItems 以便在 ItemDisplay() 方法中使用:

public List<ListItem> ListItems { get; set; } = new();

OnInitializedAsync()

ListItems = await MyService.GetItemsAsync();

我已将 GetItemsAsync() 设置为使用 IMemoryCache (Microsoft.Extensions.Caching.Memory),但我仍然不喜欢这种方法。我很难相信这个组件不支持该功能。

关于MudBlazor MudAutocomplete - 如何在列表中显示 'name',但绑定(bind)一个 Id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71654461/

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