1. 程式人生 > >MVC 在Action中,過濾器中,或檢視中,獲取當前請求的 控制器/檢視/區域的名字及跳轉

MVC 在Action中,過濾器中,或檢視中,獲取當前請求的 控制器/檢視/區域的名字及跳轉

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");