Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Web, ASP.NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
Semen Semenov
0 / 0 / 0
Регистрация: 22.09.2008
Сообщений: 1
1

UrlRewriting

26.09.2008, 09:56. Просмотров 1248. Ответов 8
Метки нет (Все метки)

Как с помошью UrlRewriting изменить страничку http://localhost:1554/usertopic.aspx?postuser=sanya на http://localhost:1554/sertopic.aspx/postuser/sanya
и необходимо ли осуществлять подобное действие для всех страниц или есть какое-то универсальное срелство???
0
mik-a-el
Администратор
73478 / 42683 / 241
Регистрация: 10.04.2006
Сообщений: 12,819
26.09.2008, 10:42 2
Воспользуйтесь этим:
http://www.urlrewriting.net/149/en/home.html
http://www.simple-talk.com/dotnet/as...r-asp.net-2.0/
2
Refactor
96 / 89 / 29
Регистрация: 05.03.2010
Сообщений: 231
15.05.2011, 22:17 3
К Вам mik-a-el вопросик, прошу подсказать по поводу библиотеки с http://www.urlrewriting.net/149/en/home.html, все заюзал, все получилось, но... например есть ссылка href="product/10/", кот. ведет на product/10/, при клике по этой ссылке я перехожу на 10-й продукт, т.е. библиотека переписывает следующий url --->> product.aspx?productid=10, для которого задано следующее правило:
XML
1
2
3
4
5
                <add name="produktidrewrite" 
                    virtualUrl="^~/product/(.*)/" 
                    rewriteUrlParameter="ExcludeFromClientQueryString" 
                    destinationUrl="~/product.aspx?productid=$1" 
                    ignoreCase="true" />
и собственно проблема в том, что например ссылка будет не href="product/10/" a href="product.aspx?productid=10", и при клике на эту ссылку мы переходим на нужный продукт, и в браузере тоже показывается этот урл product.aspx?productid=10, т.е. как прописать в правилах что если мы переходим хоть по product.aspx?productid=10, хоть по product/10/, в браузере всеравно должно отображаться product/10/

Заранее благодарен.
1
levka9
42 / 42 / 9
Регистрация: 27.06.2010
Сообщений: 91
16.05.2011, 13:04 4
я использую раутинг - очень удобно и динамично.

вот вам пример :

http://msdn.microsoft.com/en-us/library/cc668201.aspx

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
void Application_Start(object sender, EventArgs e)
        {
            // Code that runs on application startup
            RegisterRoutes(RouteTable.Routes);
        }
 
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.MapPageRoute("area_browse", "Pages/ClubList/{AREA}", "~/Pages/ClubList/Default.aspx");
            routes.MapPageRoute("client_confirmation",
                                "thread-{confirmationCode}-{clientID}",
                                "~/Default.aspx");
         
        }
 
 
// **** читаем данные: ****
 
    public partial class _default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            string areaName = Page.RouteData.Values["AREA"] as string; 
 
...
2
Alligieri
CEO
Эксперт С++
2254 / 1244 / 57
Регистрация: 16.03.2009
Сообщений: 3,588
16.05.2011, 13:08 5
levka9, роутинг появился только в ASP.NET 4.0
1
levka9
42 / 42 / 9
Регистрация: 27.06.2010
Сообщений: 91
16.05.2011, 13:30 6
Alligieri,

а тут вроде не кто не писал что под .NET 3.5 или ниже пишет,

я и сам раньше искал метод UrlRewriting не зная о том что раутинг существует.

тут просветили, сейчас радуюсь )

*** поправка , данные стоит проверить на null:

C#
1
2
3
4
if(Page.RouteData.Values["AREA"]  != null)
{
            string areaName = Page.RouteData.Values["AREA"] as string; 
}
1
mustf4
16.05.2011, 19:59
  #7

Не по теме:

Alligieri, Ошибочное мнение, появился он на самом деле в .NET 3.5, но в нем не было еще таких удобных методов как MapPageRoute или Ignore (добавляются в 3.5 с помощью метода Add), также в 4.0 добавился удобный способ получения параметров с помощью свойства Page.RouteData.Values, а в 3.5 нужно писать к нему свой HttpModule и т.д.

0
Refactor
96 / 89 / 29
Регистрация: 05.03.2010
Сообщений: 231
16.05.2011, 22:55 8
спасибо levka9 за полезный линк, надо будет заюзать в ближаешем будущем, кстате сколько материала нарыл по реврайтингу урлов, но на ASP.NET Routing не разу не наткнулся. И по поводу моего вопроса, я понял, что в данной ситуации при помощи этой конкретной библиотеки (UrlRewritingNet.UrlRewrite) неполучится чтобы ссылка типа product.aspx?productid=10 вела на product/10/, т.е. если нужно перейди на product/10/, то и линк должен быть product/10/, ну а в конфиге мы просто настраиваем правила на какой виртуальный линк срабатывает действительная ссылка.
0
Alligieri
17.05.2011, 09:33     UrlRewriting
  #9

Не по теме:

mustf4, ну ок, возможно и ошибся:) просто в 3.5 он не распостранен был (видимо из необходимости костыли делать) - потому и не пользовался им, спасибо за подсказку. Ну и мы немного в теме путаем переписывание урлов и маршрутизацию:)

0
17.05.2011, 09:33
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru