获取从扩展方法呈现的视图或部分(文件)名称

本文关键字:文件 名称 视图 扩展 方法 获取 | 更新日期: 2023-09-27 18:15:06

是否有办法从扩展方法获得呈现的文件名(或视图名)?例如:

public static string Something<T>(this System.Web.Mvc.HtmlHelper<T> helper, int value)
{
     string viewName = ...; // ???
     ...
     return someValueFromViewName;
}

** Edit

建议问题的答案:

var webPage = htmlhelper.ViewDataContainer as WebPageBase;
var virtualPath = webPage.VirtualPath;

不能工作,并且不是是这个问题的答案。我需要脚本在调用时被渲染。如果是局部的,我需要那个局部的名字。这两行只返回正在从控制器中呈现的视图,而不一定是在调用时正在呈现的视图脚本。

** Edit 2 **

这些 ddo 不是工作。它们都返回相同的值;控制器的视图脚本,而不是调用扩展方法的视图脚本(部分)。

var view = htmlhelper.ViewContext.View as BuildManagerCompiledView;
var virtualPath = webPage.ViewPath;

获取从扩展方法呈现的视图或部分(文件)名称

WebPageContext.Current.Page.VirtualPath呢?

public static string Something<T>(this System.Web.Mvc.HtmlHelper<T> helper, int value)
{
     string viewName = Path.GetFileName(WebPageContext.Current.Page.VirtualPath);
     string someValueFromViewName = viewName.DoSomething();
     return someValueFromViewName;
}

由于视图是编译的,我认为您必须检查当前调用堆栈才能确定正在呈现的部分视图。

获取调用你代码的部分视图代码的名称与获取调用你的方法的名称非常相似。