从部分页面获取当前操作名称

时间:2010-01-19 14:44:22

标签: asp.net-mvc

我在部分页面中使用自定义HtmlHelper。

示例:

/Home/Index - Is the Main Page with Index View

/Home/Partial - Is the Partial Action with Partial - A Partial View

在索引视图中:

Html.RenderAction("Partial");

在部分视图中:

我在htmlhelper中使用自定义htmlhelper我需要获取请求来自哪里的URL?

让它说它应该像“/ Home / Partial”

如何在我的htmlhelper方法

中获得此功能

1 个答案:

答案 0 :(得分:7)

根据您的需要,有几种方法可以做到这一点。您的HtmlHelper的 ViewContext 属性将具有您需要的有关特定请求的所有内容:HttpContext,RequestContext,RouteData,TempData,ViewData等。

要获取请求的当前路径,请尝试helper.ViewContext.HttpContext.Request.Path。这将返回实际的请求路径,如果路径在URL中是显式的,则可能是“/”或“/ home / index”。

我不确定你为什么要“/ home / partial”。由于这是部分视图,因此请求总是来自其他地方,例如。 “/家/索引”。

无论如何,您可以检查 RouteData 并获取(部分)动作和控制器以及其他路线值:

public static string TestHelper(this HtmlHelper helper)
{
    var controller = helper.ViewContext.RouteData.Values["controller"].ToString();
    var action = helper.ViewContext.RouteData.Values["action"].ToString();
    return controller + "/" + action;
}

如果在您的索引视图(Index.aspx)中调用,它将返回“主页/索引”。
如果在部分视图(Partial.aspx)中调用,则会返回“主页/部分”。

希望有所帮助。