Как добавить роут в существующий сайт ASP.NET MVC

понедельник, 25 мая 2009 г.,

В ASP.NET MVC проекте добавление роутов происходит в Global.asax.cs, который после компиляции проекта становится недоступен. Если при этом надо добавить свой роут, то это можно сделать в так называемом well-known методе AppInitialize.
Для этого: 1) в корень сайта добавить папку App_Code 2) создать cs файл, например, AppStart.cs со следующим кодом:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Hosting;

public class Start
{
    public static void AppInitialize()
    {
        // здесь добавляем свой роут в System.Web.Routing.RouteTable.Routes
    }
}
Добавленный роут будет выше остальных, т.е. можно перехватывать все запросы, например, так:
routes.MapRoute("Default",
    "{*request}",
    new { Controller = "Site", Action = "Test" }
    );
Все запросы попадут в метод Test, определенный в классе SiteController.
using System;
using System.ComponentModel;
using System.Web.Mvc;

namespace Site
{
    [HandleError]
    public class SiteController : Controller
    {
        public ActionResult Test(string request)
        {
             return View();
        }
    }
}

Комментариев нет: