2011-01-25 108 views
0

我們有一些使用RenderAction調用其他.aspx(讓我們稱之爲子頁面)的頁面(讓它稱爲父頁面)。MVC渲染視圖的名稱

我想什麼做的是在這些父頁面某種幫手,打印這些子頁,如果在查詢字符串的名稱使用使用像出現調試= 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

您可以使用下面的幫助:

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() 
+0

謝謝。我想知道是否可以渲染控制器動作名稱來響應呈現視圖?最好的祝福。 – Jose3d

+0

@ Jose3d,你可以使用'htmlHelper.ViewContext.RouteData.GetRequiredString(「controller」)''和'htmlHelper.ViewContext.RouteData.GetRequiredString(「action」)'。 –

+0

太好了。非常感謝。 – Jose3d