#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 не будет работать, и изображения не будут отображаться
Надеюсь, это поможет