ASP.NET Маршрутизация домена WebForms

#c# #asp.net #routing #webforms

#c# #asp.net #маршруты #webforms

Вопрос:

Я видел классную реализацию ASP.NET Маршрутизация домена MVC.
Источник: http://blog.maartenballiauw.be/post/2009/05/20/ASPNET-MVC-Domain-Routing.aspx

Можно ли это сделать на ASP.NET WebForms 4.0?

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

1. -1 для чего? не захочет ли проголосовавший «вниз» уточнить? я думаю, что нет 🙂

2. Извините, что отклонился от темы, но кроме того факта, что это классный трюк с маршрутизацией домена, какая от него польза? Я имею в виду, какая разница, чтобы иметь www.website.com/en или www.en.website.com . Я думаю, для конечных пользователей будет намного понятнее иметь МАРШРУТЫ по умолчанию, известные как доменное имя. тип имени домена / контроллеры …

3. @eugeneK: работайте с многопользовательским веб-сайтом на нескольких языках, и вы бы знали. мне жаль, что у вас не было 🙂

4. Я сделал, и фактически мой текущий проект таков. Я все еще не вижу смысла в использовании www.en.website.com вместо www.website.com/en который гораздо более удобочитаем и не требует использования механизма маршрутизации (что, вероятно, приводит к большему использованию процессора / памяти)…

Ответ №1:

Учитывая тот факт, что класс Route не является специфичным для приложений MVC и может быть легко использован в контексте простого ASP.NET WebForms project класс DomainRoute, на который вы ссылались, также должен отлично работать в этом контексте.

Должно быть достаточно простым предприятием, чтобы доказать это.

Ответ №2:

Ответ на ваш вопрос — да. На самом деле это довольно просто. Вы могли бы попробовать класс DomainRoute или просто написать свой собственный модуль перезаписи URL-адресов и все готово. Но в принципе вы бы использовали что-то вроде этого:

http://www.gutgames.com/post/Url-Rewriting-in-ASPNet.aspx

И вместо Пути вы бы использовали свойство Url и анализировали его так, как вам хочется. Или вы могли бы просто использовать проект с открытым исходным кодом, подобный этому:

http://sharedhostingsplittr.codeplex.com/

И слегка измените его, если потребуется.

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

1. спасибо, но вместо того, чтобы переписывать URL, я хотел бы расширить саму маршрутизацию url

Ответ №3:

Короткий ответ заключается в том, что да, вы можете использовать маршрутизацию в WebForms. Загляните в System.Web.Routing пространство имен.

В вашем Application_Start в вашем Global.asax вы можете настраивать маршруты на основе текста или регулярных выражений.

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

1. @skaz: Пожалуйста, назовите мне одну причину, по которой я не должен голосовать против этого!

2. @yetanothercoder — Не уверен, чего вы хотите. Вы спросили «можно ли это сделать». Да, это можно сделать. И я дал вам домашнее задание, на которое нужно обратить внимание. Я не знаю, какой ответ вы хотели…

3. @skaz: здесь мы говорим о маршрутизации домена. Я знаю о System.Web.Routing. Вы читали сообщение в блоге?

4. Я бы подумал, что голосование против было бы немного суровым. в вашем исходном сообщении не упоминалось, что вы что-либо знали о маршрутизации. @skaz ответил на ваш вопрос, хотя немного подробнее позволил бы избежать этих комментариев.

5. @Simon Halsey: если бы вы прочитали вопрос и прочитали сообщение в блоге, вы бы поняли. плюс я не голосовал против сказа.

Ответ №4:

Да, добавьте глобальный файл.ascx в свой проект и добавьте в него функцию, написанную мной

    public static void UrlRouting(RouteCollection RC, string RoutName, string routeUrl, string Page)
    {
        RC.MapPageRoute(RoutName, routeUrl, Page);
    }
after this inside Application_Start event on global.ascx file 
call that function like 
UrlRouting(RouteTable.Routes, "index", "Home", "~/index.aspx");
  

а затем вызовите его с URL-адресом маршрута, который является ~/Home
‘> Главная
Примечание: Не забудьте вызвать ResolveUrl с вашим URL, иначе он не может быть вызван
и ваши изображения и пути jquery, js также должны иметь ResolveUrl
как
‘/>
в противном случае этот jquery не будет работать, и изображения не будут отображаться
Надеюсь, это поможет