错误消息:发现具有意外名称"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>
{ }
}
我的团队曾多次遇到这种情况。
一些对我们有用的东西是:
- 删除obj和bin文件夹(临时修复;不要担心它们会在下次构建解决方案时返回(
- 重新启动VS(临时修复程序(
- 升级到最新的VS2022(VS2022-17.2.3没有这个问题;这个选项为我的团队创造了奇迹(