Я играю с Blazor и пытаюсь создать небольшой компонент Grid. Я хотел бы пройти через конфигурации через простой объект. Компилятор выдает следующую ошибку:
GridComponent.razor.g.cs(61, 254): [CS0234] The type or namespace name 'GridComponentConfig' does not exist in the namespace '__Blazor.Spa.Shared.Components.Grid' (are you missing an assembly reference?)
Файлы бритвы и cs находятся в одном каталоге.
<GridComponent data=@modules TItem="Module" Config=@GridComponentConfig></GridComponent>
@functions
{
protected GridComponentConfig GridComponentConfig = new GridComponentConfig
{
Columns = new List<string>
{
"id", "name", "description", "moduleroute"
}
};
}
Что я здесь не так делаю?
GridComponent.razor
@using Microsoft.AspNetCore.Components
@typeparam TItem
<table>
<thead>
<GridHeader Data=@Data Config=@Config></GridHeader>
</thead>
<tbody>
</tbody>
<tfoot></tfoot>
</table>
@functions
{
[Parameter]
public IEnumerable<TItem> Data { get; set; }
[Parameter]
public GridComponentConfig Config { get; set; }
}
GridHeader.razor
@using Microsoft.AspNetCore.Components
@typeparam TItem
<tr>
@foreach (string column in Config.Columns)
{
<td>@column</td>
}
</tr>
@functions
{
[Parameter]
public IEnumerable<TItem> Data { get; set; }
[Parameter]
public GridComponentConfig Config { get; set; }
}
GridComponentConfig.cs
using System.Collections.Generic;
namespace Spa.Shared.Components.Grid
{
public class GridComponentConfig
{
public IEnumerable<string> Columns { get; set; }
}
}
Исправить попытку 1:
Pages/Components/Grid/GridComponent.razor
Pages/Components/Grid/GridHeader.razor
Common/GridComponentConfig.cs
@using
s исправлены соответственно, пример ниже, от Rider.
GridComponent.razor
@using Microsoft.AspNetCore.Components
@using Spa.Common
@typeparam TItem
<table>
<thead>
<GridHeader Data=@Data Config=@Config></GridHeader>
</thead>
<tbody>
</tbody>
<tfoot></tfoot>
</table>
@functions
{
[Parameter]
protected IEnumerable<TItem> Data { get; set; }
[Parameter]
protected GridComponentConfig Config { get; set; }
}
GridHeader.razor
@using Microsoft.AspNetCore.Components
@using Spa.Common
@typeparam TItem
<tr>
@foreach (string column in Config.Columns)
{
<td>@column</td>
}
</tr>
@functions
{
[Parameter]
public IEnumerable<TItem> Data { get; set; }
[Parameter]
public GridComponentConfig Config { get; set; }
}
Результат
GridComponent.razor.g.cs(57, 231): [CS0234] The type or namespace name 'Common' does not exist in the namespace '__Blazor.Spa' (are you missing an assembly reference?)
Исправить попытку 2:
Pages/Components/Grid/GridComponent.razor
Pages/Components/Grid/GridHeader.razor
Pages/Components/Grid/GridComponentConfig.cs
Значения @using
зафиксированы соответствующим образом, пример ниже, от Rider.
GridComponent.razor
@using Microsoft.AspNetCore.Components
@typeparam TItem
<table>
<thead>
<GridHeader Data=@Data Config=@Config></GridHeader>
</thead>
<tbody>
</tbody>
<tfoot></tfoot>
</table>
@functions
{
[Parameter]
protected IEnumerable<TItem> Data { get; set; }
[Parameter]
protected GridComponentConfig Config { get; set; }
}
GridHeader.razor
@using Microsoft.AspNetCore.Components
@typeparam TItem
<tr>
@foreach (string column in Config.Columns)
{
<td>@column</td>
}
</tr>
@functions
{
[Parameter]
public IEnumerable<TItem> Data { get; set; }
[Parameter]
public GridComponentConfig Config { get; set; }
}
Результат
GridComponent.razor.g.cs(56, 253): [CS0234] The type or namespace name 'GridComponentConfig' does not exist in the namespace '__Blazor.Spa.Pages.Components.Grid' (are you missing an assembly reference?)
Обновление
- похоже, я хочу что-то другое, чем может сделать Blazor / Razor GridComponent может принимать объект конфигурации в качестве параметра. Но если я хочу передать тот же объект конфигурации компоненту GridHeader, тогда возникает ошибка компиляции. Мне нужно копать глубже.