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

на главную

Жанры

Шрифт:

Очевидно, что указанные ограничения функциональности элементов управления делают подобное использование элементов управления, требующих обработки серверных событий, непригодными для использования в представлениях. Для таких элементов управления стоит рассмотреть методику внедрения полноценных 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>

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

Разгон

Загребельный Павел Архипович
Проза:
современная проза
5.00
рейтинг книги
Разгон

Меч Предназначения

Сапковский Анджей
2. Ведьмак
Фантастика:
фэнтези
9.35
рейтинг книги
Меч Предназначения

Сборник рассказов

Андреев Леонид Николаевич
Проза:
классическая проза
русская классическая проза
5.00
рейтинг книги
Сборник рассказов

Илиада

Гомер
Старинная литература:
прочая старинная литература
5.00
рейтинг книги
Илиада

Ничего святого (Сборник)

Зорич Александр
Сборник «Ничего святого»
Фантастика:
научная фантастика
7.00
рейтинг книги
Ничего святого (Сборник)

Собрание сочинений. Т. 20. Плодовитость

Золя Эмиль
Проза:
классическая проза
5.00
рейтинг книги
Собрание сочинений. Т. 20. Плодовитость

Избранные труды. Теория и история культуры

Кнабе Георгий Степанович
Российские Пропилеи
Научно-образовательная:
культурология
6.25
рейтинг книги
Избранные труды. Теория и история культуры

Календарная книга

Березин Владимир Сергеевич
Документальная литература:
публицистика
5.00
рейтинг книги
Календарная книга

Собачий принц

Эллиот Кейт
2. Корона Звезд
Фантастика:
фэнтези
7.78
рейтинг книги
Собачий принц

Неучтенный элемент. Том 6

NikL
6. Антимаг. Вне системы
Фантастика:
фэнтези
5.25
рейтинг книги
Неучтенный элемент. Том 6

Золушка (сборник)

Макбейн Эд
Мастера остросюжетного романа
Детективы:
полицейские детективы
5.00
рейтинг книги
Золушка (сборник)

Неучтенный элемент. Том 2

NikL
2. Антимаг. Вне системы
Фантастика:
городское фэнтези
фэнтези
5.00
рейтинг книги
Неучтенный элемент. Том 2

Олд мани

Голд Яна
Любовные романы:
современные любовные романы
остросюжетные любовные романы
фемслеш
5.00
рейтинг книги
Олд мани

Перстень Агируса

Левченко Виктория Эдуардовна
Детективы:
триллеры
8.16
рейтинг книги
Перстень Агируса