2011-01-25 21 views
0

RenderActionを使用して他の.aspx(子ページと呼ぶことができます)を呼び出すページがいくつかあります(親ページとも呼ばれます)。への可能ビューのMVCレンダリング名

@Html.AutodiscoverWidgets() 

:私がやりたい何

は、これらの親ページで使用することは、クエリ文字列中のようなものを使用してデバッグ= 1を表示された場合は、これらの子ページの名前を出力するヘルパーのいくつかの種類でありますこれを行う?あなたは、次のヘルパーを使用することができ

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

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

} 

答えて

1

:どのような私は、現時点で持っていることは、次の拡張メソッドである

@Html.AutodiscoverWidgets("NameOfTheChildView") 

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