VS在具有通用Blazor视图的错误列表中显示错误时出现问题



错误消息:发现具有意外名称"TFilterViewModel"的标记元素如果该标记元素是一个组件,请为其命名空间添加@using指令。

此错误消息不应显示在错误列表中,因为通用类型TFilterViewModel具有约束ComponentBase

此外,没有生成错误。构建总是成功的。但VS在错误列表中显示一个错误,并在下面的红线下加下划线:

<TFilterViewModel ViewModel="@ViewModel" />

只是一个显示错误?

ViewModelFilter.razor

@using Common.Server.UI.ViewModels.Bases
@typeparam TModel
@typeparam TFilterViewModel
<h5><input type="checkbox" @bind="@FilterViewModel!.ShowFilter" disabled="@Disabled" />@Res.LabelFilter</h5>
@if (FilterViewModel.ShowFilter)
{
<TFilterViewModel ViewModel="@ViewModel" /> // Error: Found markup element with unexpected name 'TFilterViewModel' (...)
}
@code
{
#nullable disable
[Parameter] public IFilteredListViewModel<TFilterViewModel> FilterViewModel { get; set; }
[Parameter] public TModel ViewModel { get; set; }
[Parameter] public bool Disabled { get; set; }
#nullable restore
}

ViewModelFilter.razor.cs

using Microsoft.AspNetCore.Components;
namespace Common.Server.UI.Controls
{
public interface IViewModelComponentBase<TModel>
{
public TModel ViewModel { get; set; }
}
public partial class ViewModelFilter<TModel, TFilterViewModel> : ComponentBase
where TFilterViewModel : ComponentBase, IViewModelComponentBase<TModel>
{ }
}

我的团队曾多次遇到这种情况。

一些对我们有用的东西是:

  1. 删除obj和bin文件夹(临时修复;不要担心它们会在下次构建解决方案时返回(
  2. 重新启动VS(临时修复程序(
  3. 升级到最新的VS2022(VS2022-17.2.3没有这个问题;这个选项为我的团队创造了奇迹(

相关内容

  • 没有找到相关文章

最新更新