我希望在我的BaseController
类中编写一个方法/属性,以便任何操作都可以获取当前的URL。如果我拨打localhost/Keyword/Edit/1
,我可以使用Request.Url
来获取网址。但是,如果我的修改视图中有部分视图,则需要使用Request.UrlReferrer
来获取localhost/Keyword/Edit/1
。如果我在部分视图的操作中使用Request.Url
,我最终会得到localhost/Keyword/PartialView
。
是否有内置的方法来始终获取将在浏览器地址栏中的Url,无论我是在视图还是部分视图中?
答案 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"。
希望有所帮助。