MVC呈现视图的名称

时间:2011-01-25 13:36:19

标签: asp.net-mvc asp.net-mvc-2 asp.net-mvc-3

我们有一些页面(让我们称之为父页面)使用RenderAction调用其他.aspx(让我们称之为子页面)。

我想要做的是在这些父页面中使用某种帮助程序,如果在查询字符串中出现debug = 1,则使用以下内容打印这些子页面的名称:

@Html.AutodiscoverWidgets()

可以这样做吗?我想避免在每个子页面中添加如下内容:

@Html.AutodiscoverWidgets("NameOfTheChildView")

目前我所拥有的是以下扩展方法:

public static MvcHtmlString AutodiscoverWidgets(this HtmlHelper htmlHelper)
{
      if (HttpContext.Current.Request.QueryString["debug"].ToString() == "1")
      {

                return MvcHtmlString.Create("hello");
      }
      else
      {
                return MvcHtmlString.Create("");
      }

}

1 个答案:

答案 0 :(得分:1)

您可以使用以下帮助程序:

public static MvcHtmlString CurrentViewName(this HtmlHelper htmlHelper)
{
    var view = htmlHelper.ViewContext.View as BuildManagerCompiledView;
    if (view != null)
    {
        return MvcHtmlString.Create(view.ViewPath);
    }
    return MvcHtmlString.Empty;
}

然后:

@Html.CurrentViewName()