Это полностью непроверенный код, но если он не работает, он все равно даст вам достаточно для работы.
Первая проблема заключается в том, что вам нужно знать имя контроллера, которое вы получаете из коллекции html.ViewContext.ActionDescriptor.RouteValues
.
Во-вторых, чтобы получить механизм представления, поскольку вы используете статический метод,у вас нет автоматического внедрения зависимостей, поэтому вам нужно прибегнуть к более хакерскому шаблону поиска служб.
//Some imports...
using Microsoft.AspNetCore.Mvc.Rendering;
using Microsoft.AspNetCore.Mvc.ViewEngines;
public static bool PartialViewExists<TModel>(this IHtmlHelper<TModel> html, string viewName)
{
var controller = html.ViewContext.ActionDescriptor.RouteValues["controller"];
var viewEngine = (ICompositeViewEngine)html.ViewContext.HttpContext.RequestServices
.GetService(typeof(ICompositeViewEngine));
var result = viewEngine.GetView(html.ViewContext.ExecutingFilePath, viewName, false);
return result.View != null;
}
Это говорит мне о том, что, возможно, вам не следует использовать статический помощник дляэтот.Намного лучше создать надлежащий сервис, который будет правильно использовать всю структуру DI и который вы сможете протестировать.