我 正在 尝试 使用 foreach 语句 在 Blazor 表单 组件 中 动态 构建 下拉 列表 。 该 表单 用于 产品 , 产品 可以 链接 到 标签 。 标签 本身 具有 标签 类型 , 我 希望 为 每个 标签 类型 动态 生成 一 个 单独 的 下拉 列表 , 下拉 列表 将 链接 到 该 类型 的 所有 标签 , 并且 仅 绑定 到 该 标签 类型 的 标签 。
@foreach (var type in tagTypesDto)
{
<div class="form-group mb-3">
<RadzenSelect AllowClear="true" AllowFiltering="true" @bind-Value=@productDto.SelectedProductTags.Where(x => x == type.Tags.Select(x => x.Id).FirstOrDefault()) Multiple="true" Placeholder="@_localizer["PleaseSelect"]" Data=@tagsDto.Where(x => x.TagTypeId == type.Id)
TextProperty="Name" ValueProperty="Id" Label="@_localizer["ProductAttributes"]" />
</div>
}
中 的 每 一 个
我 无法 建置 这个 , 因为 我 收到 下列 错误 :
赋值 的 左侧 必须 是 变量 、 属性 或 索引 器
我 认为 问题 出 在 我 试图 传递 给 它 的 @bind-Value
的 LINQ 查询 上 - - 如果 我 只用 @productDto.SelectedProductTags
替换 它 , 那么 它 会 为 每 种 标记 类型 构建 并 生成 一 个 单独 的 下拉 列表 , 但是 如果 我 尝试 选择 任何 标记 , 它 就会 失败 , 大概 是 因为 它 不 知道 将 标记 分配 给 哪个 下拉 列表 。SelectedProductTags
在 我 的 产品 模型 中 如下 所 示 :
public virtual IEnumerable<int>? SelectedProductTags { get; set; } = new int[] { };
格式
我 使用 的 是 . NET 6 和 Blazor Webassembly 。
1条答案
按热度按时间fsi0uk1n1#
我在GitHub上创建了一个演示项目,为您的问题提供了一个可能的解决方案:https://github.com/Jimmys20/SO74219635
您必须使用手动事件绑定:
需要将
SelectedProductTags
更改为List<int>
。