ссылка на объект требуется для нестатического метода или свойства 'System.Web.MVC.ControllerContext.Controller.get' - PullRequest
0 голосов
/ 06 октября 2011

Я создал класс в папке Model моего приложения asp.net MVC 3 и использовал в нем следующий код

   var controller = ViewContext.Controller.ValueProvider.GetValue("controller").RawValue

но он подчеркнут и говорит: ссылка на объект требуется для нестатического метода или свойства

'System.Web.MVC.ControllerContext.Controller.get'

как избавиться от этой ошибки.

Ниже приведен полный код:

public void OnAuthorization(AuthorizationContext filterContext)
        {
            var user = (CreditRegistryPrincipal)filterContext.HttpContext.User;
            if (!user.IsAdminAuthorized)
            {
                var controller = System.Web.Mvc.ControllerContext ViewContext.Controller.ValueProvider.GetValue("controller").RawValue;

                filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary { 
                    { "controller", "Admin" }, 
                    { "action", "adfdsf" } 
                });
            }
        }

С уважением, Асиф

Ответы [ 2 ]

0 голосов
/ 06 октября 2011

Вам необходимо использовать filtercontext, который передается в функцию OnAuthorization.Таким образом, вы должны иметь возможность изменить это:

var controller = System.Web.Mvc.ControllerContext ViewContext.Controller.ValueProvider.GetValue("controller").RawValue;

На это:

var controller = filterContext.Controller.ValueProvider.GetValue("controller").RawValue;
0 голосов
/ 06 октября 2011

Эта строка:

var controller = System.Web.Mvc.ControllerContext ViewContext.Controller.ValueProvider.GetValue("controller").RawValue;

не является синтаксически допустимым, поэтому я ожидаю другую ошибку компиляции (; ожидается).

Не знаю, почему вы пытаетесь получить доступ к ViewContext внутри модели. Предположительно, это на самом деле пользовательский атрибут авторизации?

Вы пробовали:

var controller = ViewContext.Controller.ValueProvider.GetValue("controller").RawValue;

или

System.Web.Mvc.ControllerContext controller = ViewContext.Controller.ValueProvider.GetValue("controller").RawValue;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...