ASP.NET MVC和ASP.NET Core MVC中获取当前URL/Controller/Action (转载)

ASP.NET MVC


一、获取URL(ASP.NET通用):

【1】获取完整url(协议名+域名+虚拟目录名+文件名+参数)

string url=Request.Url.ToString();

【2】获取虚拟目录名+页面名+参数:

string url=Request.RawUrl;(或 string url=Request.Url.PathAndQuery;)

【3】获取虚拟目录名+页面名:

string url=HttpContext.Current.Request.Url.AbsolutePath;(或 string url= HttpContext.Current.Request.Path;)

【4】获取域名:

string url=HttpContext.Current.Request.Url.Host;

【5】获取参数:

string url= HttpContext.Current.Request.Url.Query;

【6】获取端口:

Request.Url.Port

二、获取当前Controller/Action:

RouteData.Route.GetRouteData(this.HttpContext).Values["controller"]
RouteData.Route.GetRouteData(this.HttpContext).Values["action"]
或
RouteData.Values["controller"]
RouteData.Values["action"]

在视图中

@ViewContext.RouteData.Route.GetRouteData(this.Context).Values["controller"]
@ViewContext.RouteData.Route.GetRouteData(this.Context).Values["action"]
或
@ViewContext.RouteData.Values["controller"]
@ViewContext.RouteData.Values["action"]

很显然上面只能获取当前View的,如果是嵌套的View上面获得的最终的子View的,如果要获取父View的,如下

ControllerContext.ParentActionViewContext.RouteData.Values["controller"]
ControllerContext.ParentActionViewContext.RouteData.Values["action"]
在视图中
@ViewContext.ParentActionViewContext.RouteData.Values["controller"]
@CViewContext.ParentActionViewContext.RouteData.Values["action"]

ASP.NET Core MVC


获取当前Controller/Action

在Controller中:

ControllerContext.ActionDescriptor.ControllerName
ControllerContext.ActionDescriptor.ActionName

在视图中:

@ViewContext.RouteData.Values["Controller"]
@ViewContext.RouteData.Values["Action"]

原文链接

猜你喜欢

转载自www.cnblogs.com/OpenCoder/p/10366755.html