Прочие улучшения в 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.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОК