2012-06-14 2 views
1

Я установил маршрутизацию в global.asax, который отлично работает в одном направлении. как Home.aspxASP WebForms Маршрутизация

Но то, что я на самом деле я пытаюсь сделать это маршрут ВСЕ страницы после определенного маршрута как обычный

mysite.com/token/home.aspx?demo=yes

Нажмите ссылку, чтобы связаться? целевой = Главный нас идет к

mysite.com/token/contact.aspx?target=main

Потому что я всегда хочу использовать {маркер} на всех страницах, но я хочу, чтобы веб-сайт, чтобы работать в обычном режиме

В настоящий момент я нажимаю ссылку, как контакт, и URL-адрес заполняется как mysite.com/token/contact.aspx?target=main в строке URL, но сервер говорит, что ресурс не найден; Я предполагаю на уровне сервера его маршрутизацию в /home.aspx/contact.aspx?target=main

Есть ли шаблон или настройка для маршрутизации, как обычно, любого другого .. или всех страниц на запрашиваемую страницу, а не статический маршрут - но все же иметь доступ к токену как переменной маршрута вместо параметра в запросах?

Для осветления это ASP веб-форм на .NET4 не MVC

ответ

1

Вы можете определить подстановочные маршрут и использовать BuildManager вернуть нужный файл.

Пример:

public class TokenRoute : Route 
{ 
    class TokenRouteHandler : IRouteHandler 
    { 
     #region IRouteHandler Members 

     public IHttpHandler GetHttpHandler(RequestContext requestContext) 
     { 
      var path = Convert.ToString(requestContext.RouteData.Values["path"]); 
      if (string.IsNullOrEmpty(path)) 
      { 
       path = "Default.aspx"; 
      } 

      var vPath = "~/" + path; 

      HttpContext.Current.Items[RoutingUtil.UrlRoutingVirtualPathKey] = vPath; 

      return (IHttpHandler)BuildManager.CreateInstanceFromVirtualPath(vPath, typeof(IHttpHandler)); 
     } 

     #endregion 
    } 

    public TokenRoute(string token) 
      : base(token + "/{*path}", null, new RouteValueDictionary(), new TokenRouteHandler()) 
    { 
     DataTokens = new RouteValueDictionary { { "token", token } }; 
    } 
} 

надежда, что может помочь!

+0

Спасибо за ответ. Я проверю это. Я давно прошёл эту проблему с другим решением, но хорошо знаю. Благодаря! – ppumkin

Смежные вопросы