2

有什么方法可以从扩展方法中获取文件名(或视图名)。就像是 :

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

**编辑**

建议的问题的答案:

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

不起作用,也不是这个问题的答案。我需要在调用时呈现脚本。如果它是部分名称,我需要该部分名称。这两行只返回从控制器呈现的视图,而不一定是在调用时呈现的视图脚本。

**编辑 2 **

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

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

2 回答 2

3

怎么样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;
}
于 2013-05-22T21:06:04.690 回答
0

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

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

于 2013-05-22T21:26:47.947 回答