是否有人知道是否可以检查HtmlHelperExtension中是否存在部分视图?
我知道可以从控制器使用以下内容:
private bool ViewExists(string name)
{
ViewEngineResult result = ViewEngines.Engines.FindView(ControllerContext, name, null);
return (result.View != null);
}
来源:Does a View Exist in Asp.Net MVC?
但是您无法在帮助程序中执行上述操作,因为您无权访问控制器上下文。有关如何做到这一点的任何想法?
答案 0 :(得分:32)
但你无法在帮助器中执行上述操作,因为您无权访问控制器上下文。
哦,是的,你确实有权访问:
public static HtmlString MyHelper(this HtmlHelper html)
{
var controllerContext = html.ViewContext.Controller.ControllerContext;
var result = ViewEngines.Engines.FindView(controllerContext, name, null);
...
}
答案 1 :(得分:10)
为了完整起见,查找局部视图的方法实际如下。
public static HtmlString MyHelper(this HtmlHelper html)
{
var controllerContext = html.ViewContext.Controller.ControllerContext;
ViewEngineResult result = ViewEngines.Engines.FindPartialView(controllerContext, name);
...
}
并确保包含视图的扩展名;用于razor的cshtml或用于webforms视图引擎的aspx。
答案 2 :(得分:0)
如果您使用的是Asp.Net Core(Mvc),则可以像这样检查HtmlHelper扩展中是否存在“视图”:
"k8s.io/cluster-autoscaler/${var.cluster-name}" = "true"