Поєднати Asp.Net MVC і WebForms

16

Програмування Asp.net
Попередній

Наступний

Що потрібно зробити, що б один проект обробляв і Asp.Net MVC і WebForms.

1а. Visual Studio підтримує два типи проектів WebForms: веб-додаток, в якому є папка \bin файли .designer.cs і файл .csproj, і веб-сайт, який позбавлений усього цього. Якщо проект надає собою веб-додаток, то всі переходьте до наступного кроку. Але якщо проект є веб-сайтом, то його потрібно перетворити. Відповідні інструкції доступні за адресою msdn.microsoft.com/ru-ru/library/aa983476.aspx

1. Переведіть проект на Framework 3.5 (а краще 4.0) в properties проекту (властивість Target Framework). Додати посилання(reference) на:

System.Web.Routing
System.Web.Abstractions
System.Web.Mvc

2. Додаємо в web.config наступне:

3. Додаємо в Global.asax:

public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute(“{resource}.axd/{*pathInfo}”);

routes.MapRoute(“Default”, // Route name
“{controller}/{action}/{id}”, // URL with parameters
new {controller = “Home”, action = “Index” id = “”}
);
}

protected void Application_Start(object sender, EventArgs e)
{
RegisterRoutes(RouteTable.Routes);
}

4. Відкриваємо файл проекту .csproj, заменям елемент ProjectTypeGuids на {F85E285D-A4E0-4152-9332-AB1D724D3325}; {349c5851-65df-11da-9384-00065b846f21}; {fae04ec0-301f-11d3-bf4b-00c04f79efbc}

Порядок всіх guids ВАЖЛИВИЙ. Для того що б працював останній MVC, то потрібно вказати ід проекту цього MVC (його можна дізнатися окремо створивши MVC проект)

5. Додаємо в проект папки Controllers Views

6. В system.web/httpModules додаємо:

7. В system.webServer/modules додаємо:

8. В system.webServer/handlers додаємо:

9. В папку Views додаємо Web.config (рекомендую скопіювати з іншого MVC проекту):

pageParserFilterType=”System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35″
pageBaseType=”System.Web.Mvc.ViewPage, System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35″
userControlBaseType=”System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35″>