我正在尝试获取当前控制器并在路径中调用操作。在我的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'”
我需要这样做,以便我可以使用控制器和操作来评估用户的权限,看看他们是否可以执行他们试图执行的操作。
对此的任何帮助将不胜感激。
由于
答案 0 :(得分:0)
您无法执行您要执行的操作,因为Global.asax中的代码仅在应用程序启动时执行一次。这在传入请求的上下文可用之前发生,这就是您无法访问RouteData值的原因。
更一般地说,您可以编写自定义AuthorizationAttribute来执行您想要的操作。请参阅以下链接以获取示例:http://davidhayden.com/blog/dave/archive/2009/04/09/CustomAuthorizationASPNETMVCFrameworkAuthorizeAttribute.aspx