// 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; }
它应该起作用