Проверьте, существует ли (частичное) представление из HtmlHelperMethod
Кто-нибудь знает, можно ли проверить, существует ли частичный вид из HtmlHelperExtension?
Я знаю, что это возможно от контроллера, используя следующее:
private bool ViewExists(string name)
{
ViewEngineResult result = ViewEngines.Engines.FindView(ControllerContext, name, null);
return (result.View != null);
}
Источник: Есть ли вид просмотра в Asp.Net MVC?
Но вы не можете сделать это в помощнике, так как у вас нет доступа к контексту контроллера. Любые мысли о том, как это сделать?
Ответы
Ответ 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 для движков просмотра веб-форм.