获取当前控制器和操作发送到路由

时间:2010-07-15 18:07:11

标签: c# asp.net-mvc-2 controller action

我正在尝试获取当前控制器并在路径中调用操作。在我的Global.asax.cs中,我有以下使用和以下行:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
using IProwlAdminUI.Models;

*** LINE WITH ISSUE***
string action = ViewContext.RouteData.Values["controller"].ToString() + ViewContext.RouteData.Values["action"].ToString()
*******

现在ViewContext.RouteData给我“非静态字段,方法或属性需要一个对象引用'System.Web.Mvc.ControllerContext.RouteData.Get'”

我需要这样做,以便我可以使用控制器和操作来评估用户的权限,看看他们是否可以执行他们试图执行的操作。

对此的任何帮助将不胜感激。

由于

1 个答案:

答案 0 :(得分:0)

您无法执行您要执行的操作,因为Global.asax中的代码仅在应用程序启动时执行一次。这在传入请求的上下文可用之前发生,这就是您无法访问RouteData值的原因。

更一般地说,您可以编写自定义AuthorizationAttribute来执行您想要的操作。请参阅以下链接以获取示例:http://davidhayden.com/blog/dave/archive/2009/04/09/CustomAuthorizationASPNETMVCFrameworkAuthorizeAttribute.aspx