检查HtmlHelperMethod中是否存在(部分)视图

Sam*_*les 27 c# asp.net-mvc

有谁知道是否可以检查HtmlHelperExtension中是否存在部分视图?

我知道可以从控制器使用以下内容:

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

来源:Asp.Net MVC中是否存在视图?

但是您无法在帮助程序中执行上述操作,因为您无权访问控制器上下文.有关如何做到这一点的任何想法?

Dar*_*rov 33

但是您无法在帮助程序中执行上述操作,因为您无权访问控制器上下文.

哦,是的,你有权访问:

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


Sam*_*les 10

为了完整起见,找到局部视图的方法实际上如下.

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

并确保包括视图的扩展; 用于razor的cshtml或用于webforms视图引擎的aspx.