Звучит так, будто это идеальный кандидат для помощников тегов mvc.
Вам потребуется создать класс, который наследуется от TagHelpers, и переопределить метод процесса.
[HtmlTargetElement(“website-search”)]
Public class Search : TagHelper
{
Public WebsiteContext Info { get; set; }
Public override void Process(TagHelperContext context, TagHelperOutput output)
{
Output.TagName = “section”;
Output.Content.SetHtmlContent(“ HTML for your search form “);
Output.TagMode = TagMode.StartTagAndEndTag;
}
}
Чтобы получить контроллер и действие, вам нужно добавить свойство к помощнику тега:
[HtmlAttributeNotBound]
[ViewContext]
Public ViewContext ViewContext { get; set; }
Теперь, когда у вас есть контекст представления, вы можете сделать что-то вроде следующего:
If(ViewContext.RouteData.Values[“action”]) != “Index”)
{
Output.SuppressOutput();
}
Затем вы можете сослаться на это, поставив сайт-помощник на ваш взгляд.
Пожалуйста, смотрите следующую ссылку для введения в помощники тегов https://docs.microsoft.com/en-us/aspnet/core/mvc/views/tag-helpers/intro?view=aspnetcore-2.2
Существует следующий вопрос о переполнении стека, подробно описывающий, как заставить контроллер и действие выполняться против: Зная, по какому маршруту находится пользователь внутри TagHelper в .NET Core
Надеюсь, это поможет