В ASP.Net Core вы можете использовать Просмотр компонентов , чтобы определить логику для получения данных в методе InvokeAsync и визуализации их в частичном представлении.
Другой вариант заключается виспользуйте ActionFilter
.Например, если у вас есть модель представления:
public class MainLayoutViewModel
{
public string PageTitle { get; set; }
}
Создание ActionFilter
class:
public class CommonViewBagInitializerActionFilter : ActionFilterAttribute
{
public override void OnResultExecuting(ResultExecutingContext context)
{
((Controller)context.Controller).ViewBag.MainLayoutViewModel = new MainLayoutViewModel() {
PageTitle = "MyTitle"
};
}
}
Зарегистрируйте фильтр в функции ConfigureServices
:
services.AddMvc(config =>
{
config.Filters.Add(new CommonViewBagInitializerActionFilter());
}).SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
А у тебя _Layout.cshtml
:
@{
var viewModel = (MainLayoutViewModel)ViewBag.MainLayoutViewModel;
}
<title>@viewModel.PageTitle</title>