Visual Studio 2022 Glazor错误/带有元组语法的错误,与组件回调参数一起使用时

问题描述 投票:0回答:0
I有一个称为tagcomponent的简单大麻件,它接收4个参数,我的问题与OnTagSelected参数有关,该参数接收一个从tagcomponent中调用的回调。 我的.Razor页面上的代码片段:

// other code omitted for brevity <p>Tags</p> <div class="tags-container"> @foreach (var tag in _allTags) { <TagComponent Name="@tag.Name" Id="@tag.Id" AddToProductList="true" OnTagSelected="TagSelected" /> } </div> // other code omitted for brevity

tagcomponent.Razor看起来像这样:

<span class="tag-body" @onclick="SelectTag" >
   @Name
</span>

@code {
   [Parameter, EditorRequired]
   public string Name { get; set; } = default!;

   [Parameter, EditorRequired]
   public int Id { get; set; }

   [Parameter]
   public bool AddToProductList { get; set; } = false;

   [Parameter, EditorRequired]
   public EventCallback<(int id, bool addToProduct)> OnTagSelected { get; set; }

   private async Task SelectTag()
   {
      await OnTagSelected.InvokeAsync((Id, AddToProductList));
   }
}

我需要使用@OnClick事件将2个值从tagcomponent返回到页面,因此我在EventCallback TVAlue上使用元组。

背在页面上,标记的方法看起来像这样:
@code {

List<Tag> _allTags = new List<Tag>();
List<Tag> _productTags = new List<Tag>();

// other code omitted for brevity

private void TagSelected((int id, bool addToProduct) selectedTag)
{
   if (selectedTag.addToProduct)
   {
      var transferTag = _allTags.First(t => t.Id == selectedTag.id);
      _productTags.Add(new Tag(transferTag.Id, transferTag.Name));
      _allTags.Remove(transferTag);
   }
   else
   {
      var transferTag = _productTags.First(t => t.Id == selectedTag.id);
      _allTags.Add(new Tag(transferTag.Id, transferTag.Name));
      _productTags.Remove(transferTag);
   }
}

// other code omitted for brevity

}

基本上,这里发生的是,当我单击tagcomponent时,它会在_alltags和_producttags列表之间切换,具体取决于元组参数中的bool值。

代码编译并运行正常,我的问题是在“错误列表”选项卡中使用错误/警告:

视觉工作室错误列表选项卡

也在编辑器上,还有一条红色的线条,好像存在错误(没有错误),因为代码编译和工作正常。

组件错误工具提示 我的问题是,为什么会发生这种错误/警告消失?该代码正常工作,但是IDE显示出错误,好像它没有识别元组语法与爆炸码混合。 Windows 10上的IM,使用Visual Studio社区2022预览17.4.0预览2.0,带有.NET6. Edit:这似乎是一个视觉工作室的问题,在VSCODE上,错误消失了(使用.NET 6.0.401)。

改变这个

public EventCallback<(int id, bool addToProduct)> OnTagSelected { get; set; } to 这个 public EventCallback<(int, bool)> OnTagSelected { get; set; }

它应该起作用

c# tuples blazor .net-6.0 visual-studio-2022
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.