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

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

Жанры

Шрифт:

Рис. 9.1. Структура проекта ASP.NET MVC с областями

В проекте-области Forum создан контроллер ForumController, который реализует три действия: Index, AddPost, EditPost. Точно так же в проекте Store создан контроллер ProductsController с действиями List, AddReview и Details. Для отображения результатов действий созданы соответствующие представления.

После создания проектов-областей в проект AreasProject были добавлены ссылки на эти проекты.

На рис. 9.1 вы можете заметить в проектах Store и Forum файл Routes.cs. Этот файл добавлен в проекты для того, чтобы реализовать класс AreaRegistration. Рассмотрим содержимое файла Routes.cs в проекте Store в листинге 9.1.

Листинг 9.1. Содержимое файла Routes.cs проекта Store

namespace Store

{

using System.Web.Mvc;

using System.Web.Routing;

public class Routes : AreaRegistration

{

public override void RegisterArea(

AreaRegistrationContext context)

{

context.MapRoute(

"Store_Default",

"Store/{controller}/{action}/{id}",

new {controller = "Products",

action = "List", id = ""},

new string[] { "Store.Controllers" }

);

}

public override string AreaName

{

get { return "Store"; }

}

}

}

Обратите внимание, класс Routes наследуется от AreaRegistration, что позволит подсистеме ASP.NET MVC в дальнейшем проинициализировать с помощью него подсистему областей. В классе Routes содержится два перегруженных члена: метод RegisterArea и свойство AreaName.

В RegisterArea производится регистрация маршрутов в контексте приложения с областями. С помощью context.MapRoute создается маршрут под названием store_Default. Последнее значение параметра new string[] { "Store.Controllers" } определяет пространство имен, в котором находятся контроллеры, сопоставленные данному маршруту.

Перегруженное свойство AreaName возвращает название области. Это имя в дальнейшем используется как ASP.NET MVC, так и разработчиком для указания области, из которой необходимо вызвать требуемый функционал.

Классы, подобные Routes для проекта Store, необходимо создать для каждого проекта в решении с областями.

Следующим шагом будет добавление в родительском проекте AreasProject в Global.asax следующей строки кода:

protected void Application_Start

{

AreaReg±stration.Reg±sterAllAreas;

RegisterRoutes(RouteTable.Routes);

}

Вызов AreaRegistration.RegisterAllAreas при запуске приложения позволит ASP.NET MVC инициализировать все имеющиеся области и их маршруты в приложении.

Последним шагом, необходимым для запуска проекта с областями, является модификация файлов проекта *.csproj (или *.vbproj, если ваши проекты написаны

на Visual Basic) для каждого из проектов в решении. Для того чтобы получить доступ к этим файлам, последовательно выгрузите проекты из решения с помощью команды UnloadProject. В контекстном меню на выгруженном проекте выберите Edit***.csproj (рис. 9.2), где *** — название проекта.

Рис. 9.2. Контекстное меню, позволяющее редактировать файл проекта

В файлах проектов содержится часть закомментированных определений, которые требуется раскомментировать для использования решения на базе областей. Для проектов-областей это куски кода с комментариями:

<!— To enable MVC area subproject support, uncomment the following two lines: —>

и

<!-- If this is an area child project, uncomment the following line: -->

Для родительского проекта необходимо раскомментировать куски кода, помеченные:

<!— To enable MVC area subproject support, uncomment the following two lines: -->

и

<!-- If this is an area parent project, uncomment the following lines: -->

Примечание

Возможно, что в следующих релизах ASP.NET MVC 2 действие с редактированием файлов проекта будет излишним. Ожидается, что работа с областями будет поддерживаться на уровне Solution Explorer, что облегчит создание новых областей и проектов на их базе.

*****************************

Теперь, когда проект подготовлен полностью, можно использовать проекты-области в родительском проекте следующим образом. Видоизменим в файл Site.Master в родительском проекте блок кода списка вкладок так, чтобы он выглядел, как во фрагменте:

<ul id="menu">

<li><%= Html.ActionLink("Home", "Index", "Home",

new {area = "AreasProject"}, null)%></li>

<li><%= Html.ActionLink("Forum", "Index", "Forum",

new { area = "Forum" }, null) %></li>

<li><%= Html.ActionLink("Store", "List", "Products",

new { area = "Store" }, null) %></li>

<li><%= Html.ActionLink("About", "About", "Home",

new {area = "AreasProject"}, null)%></li>

</ul>

Обратите внимание, что построение ссылок с помощью Html.ActionLink теперь требует указания области, в которой нужно найти контроллер и действие. Если мы запустим проект, то увидим следующее (рис. 9.3).

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

Эволюционер из трущоб. Том 6

Панарин Антон
6. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Эволюционер из трущоб. Том 6

Ведьмы из Броккенбурга. Барби 2

Соловьев Константин Анатольевич
3. Ведьмы из Броккенбурга
Фантастика:
фэнтези
5.00
рейтинг книги
Ведьмы из Броккенбурга. Барби 2

В лапах зверя

Зайцева Мария
1. Звериные повадки Симоновых
Любовные романы:
остросюжетные любовные романы
эро литература
5.00
рейтинг книги
В лапах зверя

Ореховый посох

Скотт Роберт
1. Eldarn Trilogy
Фантастика:
фэнтези
6.25
рейтинг книги
Ореховый посох

Кодекс Охотника. Книга XXXVII

Винокуров Юрий
37. Кодекс Охотника
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Кодекс Охотника. Книга XXXVII

Большая энциклопедия консервирования

Семикова Надежда Александровна
Дом и Семья:
кулинария
6.00
рейтинг книги
Большая энциклопедия консервирования

Ружья, микробы и сталь. Судьбы человеческих обществ

Даймонд Джаред
Научно-образовательная:
история
культурология
7.00
рейтинг книги
Ружья, микробы и сталь. Судьбы человеческих обществ

Поварское искусство

Зеленко П. М.
Дом и Семья:
кулинария
6.25
рейтинг книги
Поварское искусство

Свет в ночи

Эндрюс Вирджиния
2. Лэндри
Любовные романы:
современные любовные романы
7.50
рейтинг книги
Свет в ночи

Я еще царь. Книга XXX

Дрейк Сириус
30. Дорогой барон!
Фантастика:
юмористическое фэнтези
аниме
попаданцы
5.75
рейтинг книги
Я еще царь. Книга XXX

История россии 1917–2009

Вдовин Александр Иванович
Научно-образовательная:
история
6.25
рейтинг книги
История россии 1917–2009

Суворов и Кутузов (сборник)

Раковский Леонтий Иосифович
Лица. Эпизоды. Факты
Проза:
военная проза
историческая проза
5.00
рейтинг книги
Суворов и Кутузов (сборник)

Воронцов. Перезагрузка. Книга 3

Тарасов Ник
3. Воронцов. Перезагрузка
Фантастика:
попаданцы
альтернативная история
фэнтези
фантастика: прочее
6.00
рейтинг книги
Воронцов. Перезагрузка. Книга 3

"Фантастика 2024-66". Компиляция. Книги 1-24

Ландсберг Галина
Фантастика 2024. Компиляция
Фантастика:
боевая фантастика
попаданцы
5.00
рейтинг книги
Фантастика 2024-66. Компиляция. Книги 1-24