Umbraco: использовать данные из частичного представления в мета-заголовке HTML

У меня есть контроллер поверхности, который вызывает внешний API, чтобы получить список магазинов в данном городе и штате. Проблема в том, что мне нужно использовать некоторые данные, которые я получаю от этого звонка, в

<title></title>

Который существует в голове моего Мастер шаблона. Насколько я могу судить, невозможно передать данные из частичного представления в мастер-шаблон. Я в тупике.

Я попытался использовать ViewBag, но он рендерит голову до того, как мой частичный просмотр установит значение, и он просто обнулится.

Шаблон:

<head>
    <title>ViewBag.Title</title>
</head>
<body>    
    <div class="main foreground container">
            <h1>@CurrentPage.title</h1>
            @CurrentPage.mainColumn

            @Html.Action( "StoreDirectory", "Locations" )

    </div>
</body>

Частичный вид:

@model Fromm.Web.Consumer.Models.StoreDirectoryModel
@using Fromm.Model;

@{
    ViewBag.Title = @Model.Title;
}

1 ответ

Это на самом деле не связано с Umbraco, потому что у вас будет такая же проблема, когда вы вызываете ChildAction из шаблона, когда вы используете обычный MVC.

Единственный способ решить эту проблему - использовать MvcRenderController для вашего полного шаблона, а не SurfaceController.

Тогда... Если в основном документе указан заголовок, сделайте его перезаписываемым в шаблонах с помощью раздела:

@if (IsSectionDefined("metaTitleTag"))
{
    @RenderSection("metaTitleTag", required: true)
}
else
{
    <title>@Model.Name</title>
}
Другие вопросы по тегам