Я новичок в Razor Pages и View Components, и я не могу разобраться с концепциями:
У меня есть Example page
, эта страница отображается внутри _Layout
,например:
@page "{value1?}/{value2?}"
@model MyProject.Pages.ExampleModel
@{
ViewData["Title"] = "Example";
}
Теперь мне нужно вызвать ViewComponent условно на основе value1
и value2
:
public class ExampleModel : PageModel
{
public async Task<IActionResult> OnGetAsync(string value1, string value2)
{
// this contains a lot of logic, db access etc, and passing objects to the component, but I'm abbreviating
if (value1 == null && value2 == null)
{
return this.ViewComponent(nameof(SomeComponent));
}
else
{
return this.ViewComponent(nameof(SomeOtherComponent));
}
// return Page();
}
}
Это расширение, которое я использую для вызовакомпоненты:
public static class PageModelExtensions
{
public static ViewComponentResult ViewComponent(this PageModel pageModel, string componentName, object arguments)
{
return new ViewComponentResult
{
ViewComponentName = componentName,
Arguments = arguments,
ViewData = pageModel.ViewData,
TempData = pageModel.TempData
};
}
}
Это работает, но поскольку я не вызываю return Page()
, компонент отображается без вызова _Layout
.Как мне подойти к этому?