替代使用Request.URL和Request.URLReferrer来获取MVC中的当前链接?

时间:2015-09-18 20:16:29

标签: asp.net-mvc

我希望在我的BaseController类中编写一个方法/属性,以便任何操作都可以获取当前的URL。如果我拨打localhost/Keyword/Edit/1,我可以使用Request.Url来获取网址。但是,如果我的修改视图中有部分视图,则需要使用Request.UrlReferrer来获取localhost/Keyword/Edit/1。如果我在部分视图的操作中使用Request.Url,我最终会得到localhost/Keyword/PartialView

是否有内置的方法来始终获取将在浏览器地址栏中的Url,无论我是在视图还是部分视图中?

1 个答案:

答案 0 :(得分:1)

创建自定义HtmlHelper.Your HtmlHelper的ViewContext属性将包含有关特定请求的所有内容:HttpContext,RequestContext,RouteData,TempData,ViewData等。

要获取请求的当前路径,请尝试helper.ViewContext.HttpContext.Request.Path

您可以检查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;
}

如果在您的索引视图中调用,它将返回"主页/索引"。

如果在部分视图中调用,它将返回" Home / Partial"。

希望有所帮助。