Получение текущего контроллера и действия, отправленного в маршрут - PullRequest
0 голосов
/ 15 июля 2010

Я пытаюсь получить текущий контроллер и вызываемое действие в маршруте.В моем 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 голосов
/ 15 июля 2010

Вы не можете делать то, что пытаетесь сделать, потому что код в Global.asax выполняется только один раз при запуске вашего приложения.Это происходит до того, как контекст входящего запроса становится доступным, и поэтому вы не можете получить доступ к значениям RouteData.

В более общем примечании вы можете написать собственный атрибут AuthorizationAttribute, чтобы делать то, что вы хотите.Смотрите следующую ссылку для примера: http://davidhayden.com/blog/dave/archive/2009/04/09/CustomAuthorizationASPNETMVCFrameworkAuthorizeAttribute.aspx

...