错误消息: 发现了名称为'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>
{ }
}