.NET MVC 在action中或过滤器中或视图中,分别如何获取 当前请求的 控制器/视图/区域 的名字
1)过滤器中的:
public class CMSAttribute : FilterAttribute, IAuthorizationFilter { public void OnAuthorization(AuthorizationContext filterContext) { var controllerName = (filterContext.RouteData.Values["controller"]).ToString().ToLower(); var actionName = (filterContext.RouteData.Values["action"]).ToString().ToLower(); var areaName = (filterContext.RouteData.DataTokens["area"] == null ? "" : filterContext.RouteData.DataTokens["area"]).ToString().ToLower(); } }
2)视图中的:
@{ //获取当前路由的区域名称 var areaName = (ViewContext.RouteData.DataTokens["area"] == null ? "" : ViewContext.RouteData.DataTokens["area"]).ToString().ToLower(); var actionName=ViewContext.RouteData.Values["action"].ToString().ToLower(); var controllerName = ViewContext.RouteData.Values["controller"].ToString().ToLower(); }
3)action中:
string areaName=RouteData.DataTokens["area"].ToString().ToLower(); string controllerName = RouteData.Values["controller"].ToString().ToLower(); string actionName = RouteData.Values["action"].ToString().ToLower();
获取控制器名称:
ViewContext.RouteData.Values["controller"].ToString();
获取Action名称:
ViewContext.RouteData.Values["action"].ToString();
获取路由参数值:
ViewContext.RouteData.Values[名称].ToString();
如:ViewContext.RouteData.Values["ID"].ToString(); 获取ID的值
获取area名称
在代码中:
ControllerContext.RouteData.DataTokens["area"]
在View中:
ViewContext.RouteData.DataTokens["area"]