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

时间:2013-05-22 19:47:54

标签: c# asp.net-mvc-4

是否有任何方法可以从扩展方法获取文件名(或视图名称)。类似的东西:

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 **

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

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

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:0)

由于编译了视图,我认为你必须检查当前的调用堆栈才能确定正在渲染的部分视图。

获取调用代码的部分视图代码的名称非常类似于获取调用您的方法的名称。