пытается настроить мультитенантный сайт с помощью ABP.io framework 3.1.
Я пытаюсь установить ‹мета-ключевые слова (среди других тегов) в заголовке html страницы. Я пытаюсь получить значения из поля базы данных для текущего клиента, поэтому мета-ключевые слова будут специфичными для этого клиента. Я попытался следовать образцу, который доступен здесь: https://docs.abp.io/en/abp/latest/UI/AspNetCore/Customization-User-Interface#layout-hooks, где они вставляют код сценария Google Analytics в тег заголовка.
это нормально, так как это статический текст, но когда я пытаюсь загрузить частичную страницу с моделью, выдается ошибка ожидания другой модели по сравнению с той, которая была передана.
Пока у меня есть компонент просмотра уведомлений
Public class MetaKeywordViewComponent : AbpViewComponent
{
public async Task<IViewComponentResult> InvokeAsync() {
return View("/Pages/Shared/Components/Head/MetaKeyword.cshtml"); //, meta);
}
}
и страница cshtml
@using MyCompany.MyProduct.Web.Pages.Shared.Components.Head
@model MetaKeywordModel
@if (Model.SiteData.Keywords.Length > 0)
{
<meta content="@Model.SiteData.Keywords" name="keywords" />
}
и файл cshtml.cs как
public class MetaKeywordModel : MyProductPageModel
{
private readonly ITenantSiteDataAppService _tenantSiteDataAppService;
public TenantSiteDataDto SiteData { get; private set; }
public MetaKeywordModel(ITenantSiteDataAppService tenantSiteDataAppService)
{
_tenantSiteDataAppService = tenantSiteDataAppService;
}
public virtual async Task<ActionResult> OnGetAsync()
{
if (CurrentTenant != null)
{
SiteData = await _tenantSiteDataAppService.GetSiteDataAsync();
}
return Page();
}
}
но когда я запускаю программу, я получаю следующую ошибку.
An unhandled exception has occurred while executing the request.
System.InvalidOperationException: The model item passed into the ViewDataDictionary is of type 'Volo.Abp.AspNetCore.Mvc.UI.Components.LayoutHook.LayoutHookViewModel', but this ViewDataDictionary instance requires a model item of type 'MyCompany.MyProduct.TenantData.Dtos.TenantSiteDataDto'.
Как передать данные из моей базы данных на страницу для отображения, если я не могу использовать свою модель?
Приветствуются любые подсказки и подсказки.
С уважением, Мэтти