MVC 在Action中,过滤器中,或视图中,获取当前请求的 控制器/视图/区域的名字及跳转

来源:互联网 发布:致幻蘑菇 知乎 编辑:程序博客网 时间:2024/05/02 13:48

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"]

附:过滤器上下文中跳转

filterContext.HttpContext.Response.Redirect("/Home/Contact");


filterContext.Result = new RedirectResult("/Home/Contact");


0 0
原创粉丝点击