Подтвердить что ты не робот

Проверьте, существует ли (частичное) представление из HtmlHelperMethod

Кто-нибудь знает, можно ли проверить, существует ли частичный вид из HtmlHelperExtension?

Я знаю, что это возможно от контроллера, используя следующее:

 private bool ViewExists(string name)
 {
     ViewEngineResult result = ViewEngines.Engines.FindView(ControllerContext, name, null);
     return (result.View != null);
 }

Источник: Есть ли вид просмотра в Asp.Net MVC?

Но вы не можете сделать это в помощнике, так как у вас нет доступа к контексту контроллера. Любые мысли о том, как это сделать?

4b9b3361

Ответ 1

Но вы не можете сделать это в помощнике, так как у вас нет доступа к контексту контроллера.

О да, у вас есть доступ:

public static HtmlString MyHelper(this HtmlHelper html)
{
    var controllerContext = html.ViewContext.Controller.ControllerContext;
    var result = ViewEngines.Engines.FindView(controllerContext, name, null);
    ...
}

Ответ 2

Для полноты, способ найти частичный вид, на самом деле выглядит следующим образом.

public static HtmlString MyHelper(this HtmlHelper html)
{
     var controllerContext = html.ViewContext.Controller.ControllerContext;
     ViewEngineResult result = ViewEngines.Engines.FindPartialView(controllerContext, name);
     ...
}

И обязательно включите расширение представления; либо cshtml для бритвы или aspx для движков просмотра веб-форм.