Чтение онлайн

на главную - закладки

Жанры

Шрифт:

Очевидно, что указанные ограничения функциональности элементов управления делают подобное использование элементов управления, требующих обработки серверных событий, непригодными для использования в представлениях. Для таких элементов управления стоит рассмотреть методику внедрения полноценных WebForms-страниц в MVC-приложение.

С другой стороны, для элементов, отвечающих только за генерацию разметки, такое использование может быть оправдано.

Внедрение страниц WebForms в MVC-приложения

Чтобы использовать страницу WebForms в MVC-приложении, нет необходимости писать большое количество кода. Поскольку MVC-приложение по сути является ASP.NET-приложением, и при его создании нет препятствий к использованию WebForms, все, что нужно сделать — объяснить системе маршрутизации MVC Framework, что для страниц WebForms эту самую систему маршрутизации использовать не надо. Для этого достаточно добавить в файле Global.asax в метод RegisterRoutes правило для игнорирования путей к страницам ASPX:

routes.IgnoreRoute("{resource}.aspx/{"pathInfo}");

После этого в MVC-приложение можно добавить стандартную ASPX-страницу, например WebForm1.aspx, код которой приведен в листинге 2.8, и для этой страницы будет обеспечена полноценная функциональность WebForms, что подтверждает рис. 2.4.

Листинг 2.8. Страница WebForml.aspx

<%@ Page Language="C#" AutoEventWireup="true"

CodeBehind="WebForm1.aspx.cs"

Inherits="MvcWebFormsCompositeApp.WebForm1" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

<title></title>

</head>

<body>

<form runat="server">

<asp:SqlDataSource ID="SqlDataSource1" runat="server"

ConnectionString="<%$ ConnectionStrings:ConnectionString %>"

SelectCommand="SELECT * FROM [Persons]">

</asp:SqlDataSource>

<br/>

<asp:GridView ID="GridView1" runat="server"

AutoGenerateColumns="False" DataKeyNames="PersonId"

DataSourceID="SqlDataSource1">

<Columns>

<asp:BoundField DataField="PersonId"

HeaderText="PersonId"

InsertVisible="False" ReadOnly="True"

SortExpression="PersonId" />

<asp:BoundField DataField="LastName"

HeaderText="LastName" SortExpression="LastName" />

<asp:BoundField DataField="FirstName"

HeaderText="FirstName" SortExpression="FirstName" />

</Columns>

</asp:GridView>

</form>

</body>

</html>

Использование MVC Framework в существующих решениях WebForms

Рассмотрим сценарий расширения существующего WebForms-приложения с использованием MVC Framework. Для этого нужно выполнить несколько простых шагов:

1. Установить в свойствах веб-приложения версию .NET Framework 3.5, поскольку если приложение WebForms было разработано для версии .NET Framework 2.0, то MVC Framework для нее не поддерживается.

2. Добавить ссылки на сборки System.Web.Mvc и System.Web.Routing.

3. Зарегистрировать в файле web.config необходимые для функционирования MVC-приложения обработчики в разделе system.web/httpModules (листинг 2.9) и system/webServer/modules и system/webServer/handlers (листинг 2.10). Необходимые изменения выделены полужирным. Кроме того, поскольку в листингах 2.9 и 2.10 сборки указываются без описания версий, необходимо в директорию bin веб-приложения скопировать файлы System.Web.Mvc.dll и System.Web.Routing.dll. Либо указать полные имена сборок, посмотрев описания в тестовом MVC-приложении, которое стоит создать по такому случаю.

4. Зарегистрировать пространства имен, которые будут использовать представления (листинг 2.11).

5. Создать таблицу маршрутизации в файле global.asax (листинг 2.12).

6. Создать директорию /Controllers, разместить в ней контроллеры.

7. Создать директорию /Views и разместить в ней дерево представлений, отвечающее контроллерам и их действиям (рис. 2.5).

Листинг 2.9. Регистрация модуля MVC Framework в web.config

<system.web>

<httpModules>

<add name="UrlRoutingModule"

type=" System.Web.Routing.UrlRoutingModule,

System.Web.Routing" />

<add name="ScriptModule"

type="System.Web.Handlers.ScriptModule,

System.Web.Extensions"/>

</httpModules>

Листинг 2.10. Регистрация модулей и обработчиков MVC Framework в web.config

<system.webServer>

<validation validateIntegratedModeConfiguration="false"/>

<modules runAllManagedModulesForAllRequests="true">

<add name="ScriptModule" preCondition="managedHandler"

type="System.Web.Handlers.ScriptModule,

System.Web.Extensions"/>

<add name="UrlRoutingModule" type="

System.Web. Routing.UrlRoutingModule,

System.Web.Routing" />

</modules>

<handlers>

Поделиться:
Популярные книги

Петр III

Сахаров Андрей Николаевич
12. Романовы. Династия в романах
Проза:
историческая проза
5.00
рейтинг книги
Петр III

Принадлежать им

Зайцева Мария
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Принадлежать им

Город гибели

МакКаммон Роберт Рик
Фантастика:
ужасы и мистика
мистика
7.78
рейтинг книги
Город гибели

Путь Князя. Возрождение. Часть I

Рокотов Алексей
6. Путь князя
Фантастика:
рпг
попаданцы
5.00
рейтинг книги
Путь Князя. Возрождение. Часть I

Барон диктует правила

Ренгач Евгений
4. Закон сильного
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Барон диктует правила

Леди Малиновой пустоши

Шах Ольга
Любовные романы:
любовно-фантастические романы
6.20
рейтинг книги
Леди Малиновой пустоши

Невольничий караван

Май Карл Фридрих
Приключения:
прочие приключения
6.83
рейтинг книги
Невольничий караван

Сердце Дракона. Том 12

Клеванский Кирилл Сергеевич
12. Сердце дракона
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
7.29
рейтинг книги
Сердце Дракона. Том 12

Газлайтер. Том 17

Володин Григорий Григорьевич
17. История Телепата
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Газлайтер. Том 17

Глобальный человейник

Зиновьев Александр Александрович
Документальная литература:
критика
прочая документальная литература
публицистика
6.40
рейтинг книги
Глобальный человейник

Клинок Судеб

Глушков Владислав
Проза:
современная проза
5.75
рейтинг книги
Клинок Судеб

Шайтан Иван

Тен Эдуард
1. Шайтан Иван
Фантастика:
боевая фантастика
попаданцы
альтернативная история
5.25
рейтинг книги
Шайтан Иван

Студиозус 2

Шмаков Алексей Семенович
4. Светлая Тьма
Фантастика:
юмористическое фэнтези
городское фэнтези
аниме
6.25
рейтинг книги
Студиозус 2

Темные тропы и светлые дела

Владимиров Денис
3. Глэрд
Фантастика:
фэнтези
боевая фантастика
попаданцы
5.00
рейтинг книги
Темные тропы и светлые дела