Можно ли добавить значение в коллекцию MVC2 RC DataTokens? - PullRequest
0 голосов
/ 05 января 2010

Я использую ASP.NET MVC2 RC и построил защиту поверх спецификации Areas / Controller / Action, используя в основном таблицу, которая сообщает инфраструктуре, какая роль имеет разрешение на выполнение действия какого контроллера.

Код, который я использовал для получения «области», был таким:

RouteData.Values["area"]

А потом я проверил это в базе данных. Моя проблема заключается в том, что при переходе с MVC 1 RTM на MVC2 RC область попадает в коллекцию DataTokens, а если вызываемый контроллер находится в корневой области, следующий код возвращает ноль

RouteData.DataTokens["area"]

Знаете ли вы, если есть какой-нибудь способ сообщить MVC, что если "area" отсутствует в коллекции DataTokens, она должна содержать string.Empty?

Я пытаюсь не изменять мой код, чтобы проверить его на ноль.

Спасибо!

Ответы [ 2 ]

1 голос
/ 23 мая 2012

В качестве временного решения вы можете вручную добавить значение из RouteData.Values ​​в RouteData.DataTokens. Но в идеале вам нужно устранить первопричину.

Вот способ решения проблемы:

        if (controllerContext.RouteData.Values.ContainsKey("area"))
        {
            ControllerContext.RouteData.DataTokens.Add("area", ControllerContext.RouteData.Values["area"]);
        }
0 голосов
/ 05 января 2010

Почему бы просто не проверить, является ли RouteData.DataTokens ["area"] нулевым (или пустым), и принять область по умолчанию, когда она есть?

Редактировать

Извинения, я не прочитал последнюю строку вашего вопроса, прежде чем ответить. В чем проблема с изменением кода?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...