Книга: ASP.NET MVC Framework

Прочие улучшения в API

Прочие улучшения в API

Кроме перечисленных ранее значительных нововведений, ASP.NET MVC 2 предложит еще ряд менее значительных изменений в API:

? новый защищенный виртуальный метод createActioninvoker в классе controller, который вызывается свойством Actioninvoker и позволяет создавать отложенное создание экземпляра (instantiation) инициатора, если он не установлен;

? новый защищенный виртуальный метод OnAuthorizationFailed в классе AuthorizationFilter, который позволяет фильтрам авторизации отрабатывать ситуации, когда авторизация была провалена;

? новый метод Add(stringkey, object value) у класса ValueProviderDictionary, который позволяет проще задавать значения для экземпляров класса;

? новое свойство ActionDescriptor в классе AuthorizationContext;

? метод Controller.Execute теперь вызовет исключение в ситуации, когда он вызван более одного раза в одном экземпляре. Это означает явное ограничение на вызов единственного экземпляра контроллера на каждый запрос;

? класс Controller более не наследуется от MarshalByRefObject;

? конструктор AuthorizationContext(ControllerContext context) объявлен устаревшим, вместо него предлагается использовать вариант с двумя параметрами;

? внесены изменения в типы моделей так, что они теперь могут быть не только ссылочными типами, но и значениями. Например, в MVC 2 можно будет использовать System.Int32 как тип модели;

? поиск контроллеров в пространстве имен, указанном при регистрации маршрутов, теперь будет выполняться и в подпространствах имен.

Кроме нововведений, MVC 2 содержит изменения, которые "ломают" совместимость с существующим кодом:

? из класса DefaultControllerFactory исключено свойство RequestContext, вместо этого значение RequestContext передается в методы GetControllerinstance и GetControllerType. Это изменение нарушает работу пользовательских вариантов фабрики контроллеров, которые наследовались от класса DefaultControllerFactory;

? строковое значение area в MVC 2 стало зарезервированным значением, которое нельзя использовать в качестве параметров маршрута при создании маршрутизации. В этом area стало похоже на бывшие ранее зарегистрированными строки controller и action;

? методы расширения хелпер-классов (вспомогательных классов) отныне возвращают MvcHtmlString, вместо строки. Это нововведение рассчитано на использование в окружении ASP.NET 4.0 для получения преимуществ от нового синтаксиса элементов HTML-кодирования;

? действия, которые возвращают JsonResult, в MVC 2 обязаны вызываться только в ответ на POST-запросы, это ограничение введено в целях повышения безопасности, поскольку обнаружены новые типы атак JSON Hijacking, осуществляемые при GET-запросах JSON-данных. Однако MVC 2 будет поддерживать способ обойти это ограничение через использование свойства JsonRequestBehavior у класса JsonResult;

? свойства Model и ModelType объявлены устаревшими, вместо них предлагается использовать новое свойство ModelMetadata, которое содержит в себе данные Model и ModelType.

Оглавление книги


Генерация: 1.176. Запросов К БД/Cache: 3 / 1
поделиться
Вверх Вниз