Controller.Request.QueryString在授权过滤器中没有密钥

时间:2014-06-07 19:52:22

标签: c# asp.net-mvc action-filter

我正在尝试编写自定义授权过滤器来检查用户的权限。我创建了我的Filter类,并使用我的自定义属性修饰了我的动作。我的问题是,当执行以下语句时:

var controller = (Mvc.Controllers.MyController) filterContext.Controller;
var id = Int32.Parse(controller.Request.QueryString["id"]);

方法

IAuthorizationFilter.OnAuthorization(AuthorizationContext filterContext)

我得到一个空引用错误。当我调试时,我可以看到QueryString属性绝对没有键(它是一个GET动作,带有“id”参数)。您是否认为在执行授权过滤器时,查询字符串尚未绑定到te控制器? (授权过滤器执行得太早)。但是,如果是这种情况,授权过滤器的预期用途是什么?你认为正确的方法是使用Action Filter并覆盖OnActionExecuting()吗?

1 个答案:

答案 0 :(得分:1)

评论中建议并且OP接受的答案是:id是路由的一部分而不是查询字符串。