/ / MVC render nazwa widoku - asp.net-mvc, asp.net-mvc-2, asp.net-mvc-3

MVC renderuje nazwę widoku - asp.net-mvc, asp.net-mvc-2, asp.net-mvc-3

Mamy kilka stron (nazwijmy to stronami nadrzędnymi), które wywołują inne .aspx (nazwijmy to stronami podrzędnymi) za pomocą RenderAction.

Chciałbym użyć na tych stronach nadrzędnych jakiegoś pomocnika, który drukuje nazwy tych stron podrzędnych, jeśli w quistystring pojawia się debug = 1 przy użyciu czegoś takiego:

@Html.AutodiscoverWidgets()

Czy można to zrobić? Chciałbym uniknąć umieszczania na każdej stronie podrzędnej czegoś takiego:

@Html.AutodiscoverWidgets("NameOfTheChildView")

W tej chwili mam następującą metodę rozszerzenia:

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

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

}

Odpowiedzi:

1 dla odpowiedzi № 1

Możesz użyć następującego pomocnika:

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;
}

i wtedy:

@Html.CurrentViewName()