На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
> Маршрутизация , с чего бы начать?
    И так вот нашел вот такую штуку: Маршрутизация
    в статье используются "Маршруты, обработчики маршрутов и модуль маршрутизации", есть много подобных статей и везде все по разному, я точно понял что микрософт обработчики юзать не хочю, хочю ручками написать.

    И так к примеру:
    в корне проекта папка "in"
    в папке несколько форм:
    reg.aspx
    Account.aspx
    EditingAccount.aspx
    user.aspx

    нуно реализовать маршруты
    http://subdomen.domen/reg
    http://subdomen.domen/account
    http://subdomen.domen/editingaccount

    и скажем так одна страничка принимает get параметр (id пользователя)
    user.aspx?id=0000 к которой нужно обратится так: http://subdomen.domen/id0000 или так: http://subdomen.domen/blatnoy_user

    с чего бы начать? пустой проект для издевательств уже готов) :unsure:
      Цитата -=VIRUS=- @
      я точно понял что микрософт обработчики юзать не хочю, хочю ручками написать.

      какие микрософт обработчики? <_<

      в статье по ссылке описаны методы для асп.нета, ты не хочешь его использовать?

      используй PHP :lool:
        не хочю вот это юзать
        user posted image
        вот это подходит:
        user posted image
        токо я не вкурил как такое за юзать
        http://subdomen.domen/id0000
        в лучшем случае вот так получается

        ExpandedWrap disabled
                  routes.Clear()
                  routes.MapPageRoute("Account", "account", "~/in/Account.aspx")
                  routes.MapPageRoute("EditingAccount", "editingaccount", "~/in/EditingAccount.aspx")
                  routes.MapPageRoute("reg", "reg", "~/in/reg.aspx")
                  routes.MapPageRoute("user", "user/{id}", "~/in/User.aspx") ' /user/0000


        Вот это routes.MapPageRoute("user", "user/{id}", "~/in/User.aspx") работает не так как хотелось бы.
        во первых http://subdomen.domen/user/0000 - чтоб получить "0000" пришлось нечто другое писать

        http://subdomen.domen/user/ID0000
        http://subdomen.domen/user/SUPER_USER
        ExpandedWrap disabled
          ID = Page.RouteData.Values("id")
             If Not ID Is Nothing Then
                If ID.Length > 3 Then
                   If LCase(Mid(ID, 1, 2)) = "id" Then
                      ' ID пользователя
                      Label1.Text = "ID пользователя: " + ID ' ID0000
                   Else
                      ' блатной URL
                      Label1.Text = "Блатной URL пользователя: " + ID ' SUPER_USER
                   End If
                End If
             End If

        можно как то из пути убрать user "http://subdomen.domen/user/ID0000 -> http://subdomen.domen/ID0000(http://subdom...PER_USER")
        думал вот так: routes.MapPageRoute("user", "{URL}", "~/err.aspx") сделать, типо все отправить на ERR.aspx, а оттуда уже переадресовать если ключь будет опознан. Не уверен как себя поведет aspx, даже если примет код)
        и... переадресация постоянная как скажется на скорости? предположим что использовал такой код: ""user", "{URL}", "~/err.aspx""
        пользователю загружается err.aspx? то есть ну к примеру грузим
        http://subdomen.domen/ID0000 в Page_Load (err.aspx) ловим Page.RouteData.Values("URL") и если URL = ID0000 делаем редирект на user.aspx?id=0000
        что и в какой последовательности будет получать браузер пользователя?

        Добавлено
        не с редирект затея плохая, работать работает, но адрес не тот http://localhost:10652/in/user.aspx?id=ID0000
        Сообщение отредактировано: -=VIRUS=- -
          Цитата -=VIRUS=- @
          токо я не вкурил как такое за юзать
          http://subdomen.domen/id0000

          ExpandedWrap disabled
            routes.MapPageRoute("user", "id{id}", "~/in/User.aspx")

          ?
            Цитата UncleBob @
            routes.MapPageRoute("user", "id{id}", "~/in/User.aspx")

            Ну так работает, да. Я уже методом перебора нашел) :D
            Как такое сделать? :

            http://subdomen.domen/super_user
            http://subdomen.domen/vitalii
            http://subdomen.domen/anton

            Мысли конечно есть, множественной переадресацией. Чют я пока в голове не могу сложить.
            ExpandedWrap disabled
              routes.MapPageRoute("err", "err/{key}", "~/Default.aspx")
              routes.MapPageRoute("user", "{URL}", "~/in/User.aspx")' типо тут проверим что после слеша, проверяющий код на стороннице User.aspx


            На user.aspx по искать ссылку, и если нету,
            ExpandedWrap disabled
              Response.Redirect("/err/not_url")' если блатной ссылки не нашлось переадресовать на Default.aspx с ключем not_url


            теперь сам вопрос по routes.MapPageRoute:
            Предположим ссылка на пользователя http://subdomen.domen/ID0001
            он в настройках ее меняет на vitalii, то есть должно выглядеть так http://subdomen.domen/vitalii
            что мне нужно сделать?(вопрос на занятость понятен) я так понимаю просто сохранить настройку и начать отлавливать ее в User.aspx

            в этом варианте все что http://subdomen.domen/xxxx проходит проверку тут:
            ExpandedWrap disabled
              routes.MapPageRoute("Account", "account", "~/in/Account.aspx")
              routes.MapPageRoute("EditingAccount", "editingaccount", "~/in/EditingAccount.aspx")
              routes.MapPageRoute("reg", "reg", "~/in/reg.aspx")
              routes.MapPageRoute("err", "err/{key}", "~/Default.aspx")
              routes.MapPageRoute("user_id", "id{id}", "~/in/User.aspx")
              routes.MapPageRoute("user", "{URL}", "~/in/User.aspx")
            и все лишнее идет на User.aspx
            можно ли как то произвести проверку до вызова User.aspx, например в Global.asax
            ExpandedWrap disabled
              Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs)
                  ' Порождается в начале каждого запроса
              End Sub

            если ссылка не корректна сбросить ее сразу в /err/not_url, ну как то так.
            Сообщение отредактировано: -=VIRUS=- -
            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
            0 пользователей:


            Рейтинг@Mail.ru
            [ Script execution time: 0,0273 ]   [ 17 queries used ]   [ Generated: 25.04.24, 21:01 GMT ]