Обработка маршрутов в ASP.NET - PullRequest
1 голос
/ 25 июля 2011

Я работаю в ASP.NET WebForms и C #.Я пытаюсь добавить маршруты для разных страниц.Это пример кода из моего global.asax, который регистрирует маршруты

protected void Application_Start(object sender, EventArgs e)
{
    RegisterRoutes(RouteTable.Routes);
    //AppSettings = AppConfig.AppSettings.Settings;
    //ConSettings = AppConfig.ConnectionStrings.ConnectionStrings;
}

public static void RegisterRoutes(RouteCollection routes)
{
    routes.Add("Admin_Users_Update", new Route("Admin/Users/Update/{UserId}", new RoutingHandler("~/Forms/Admin/Users/UpdateUser.aspx")));
}

Работает нормально.И если мы откроем URL-адрес, например / Admin / Users / Update / 1, он откроет форму редактирования.Но проблема начинается, если не следовать шаблону или внести какие-либо изменения.Например, если мы введем

/Admin/Users/Update/1/2

или

/Admin/Users/Update/

, просто отобразится страница 404.

Знаете ли вы, как мы можем справиться с этим?Так что, если есть небольшая разница в шаблоне URL, мы все равно сможем справиться с этим.

1 Ответ

1 голос
/ 25 июля 2011

Что ж, если вы укажете шаблон и попросите обработчик маршрута найти его, он будет искать только этот шаблон.Фреймворк следует вашим правилам.

Вы можете выбрать

1) найти все возможные шаблоны и зарегистрировать маршруты (вы можете использовать некоторый идентификатор для / 1/2 и т. Д.).

2) Вы можете указать регулярные выражения для правил маршрутизации.Посмотрите здесь .

3) ознакомьтесь с открытым исходным кодом url rewriter .он может дать вам то, что вы хотите .. пример здесь .

4) пропустите маршрутизацию и используйте свой собственный модуль http, который находится в конвейере, слушает запросы и обрабатывает его самостоятельно.Вероятно, вы все еще можете использовать встроенную маршрутизацию, прочитав раздел обработчика маршрута и применив его.Я не уверен, но стоит попробовать.

...