2014-10-28 4 views
0

Я хочу реализовать сценарий jquery, который принимает любое имя после косой черты «/» в доменном адресе и перенаправляет пользователя на страницу по умолчанию, запрос с именем пользователя. Например, если пользователь пишет mydomain.com/username, я хочу перенаправить страницу на mydomain.com/default.aspx?name = имя пользователя.Возьмите имя пользователя из URL-адреса и перенаправьте строку запроса с этим именем пользователя

Как это сделать? Благодаря

РЕШЕНИЕ

Я добавил следующий код в файле global.asa.

protected void Application_BeginRequest(object sender, EventArgs e) 
    { 
     Uri uriAddress = new Uri(Request.Url.AbsoluteUri); 

     if (uriAddress.Segments != null && uriAddress.Segments.Length > 1 && !String.IsNullOrEmpty(uriAddress.Segments[1])) 
     { 
      string SegmentUsername = uriAddress.Segments[1]; 
      Response.Redirect("default.aspx?name=" + SegmentUsername);     
     } 
    } 
+1

Вы должны сделать это на стороне сервера (разбор URL, перенаправление и т. Д.). JS и jQuery не относятся к описанной ситуации. – Regent

+1

Я думаю, что делать это с серверной стороны - это наилучшая практика .. probably вам нужно сделать это с переписыванием URL. –

ответ

0

здесь это комплексное решение по URL Переписывая .. http://www.codeproject.com/Articles/641758/An-Example-of-URL-Rewriting-With-ASP-NET

текст оттуда .. URL перезапись процесс перехвата веб входящий запрос и перенаправляет запрос на другой ресурс. При выполнении перезаписи URL-адресов, как правило, запрашиваемый URL-адрес проверяется и, исходя из его значения, запрос перенаправляется на другой URL-адрес. Например, веб-страницы реструктуризации веб-сайта указанного каталога или статьи, а также при доступе к веб-странице из статьи или каталога по URL-адресу, URL-адрес автоматически переносится в каталог «Блог». Это происходит при перезаписи URL.

+0

Есть ли прямая документация о моем случае? Никогда не работал с обрезкой URL, разборчивость .... и т. Д. – Gloria

0

здесь типичный пример, который будет работать в вашем конкретном случае .. и пусть вы знаете, как URL переписывания работы ..

добавить этот класс в свой веб-сайт asp.net папку App_Code

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Text.RegularExpressions; 

/// <summary> 
/// Summary description for Class1 
/// </summary> 
public class URLRule 
    { 
     public string URLPateren { set; get; } 
     public string Rewrite { set; get; } 
    } 
    public class ListURL : List<URLRule> 
    { 

     public ListURL() 
     { 
      //may be you need to redefine this rule in order to make it mature. 
      URLRule obj = new URLRule(); 
      obj.URLPateren = "/(.*)?/(.*)"; 
      obj.Rewrite = "default.aspx?name=$2"; 
      Add(obj); 
      //here you can add more rules as above.. 

     } 

     public string Process(string str) 
     { 

      Regex oReg; 

      foreach (URLRule obj in this) 
      { 
       oReg = new Regex(obj.URLPateren); 
       Match oMatch = oReg.Match(str); 

       if (oMatch.Success) 
       { 
        string s = oReg.Replace(str, obj.Rewrite); 
        return s; 
       } 
      } 
      return str; 
     } 
    } 

Теперь добавьте следующий фрагмент кода в global.asax , если вы уже не имеете, то добавить его от добавления нового элемента затем выберите «глобальный класс приложения»

protected void Application_BeginRequest(object sender, EventArgs e) 
    { 



     ListURL rewriter = new ListURL(); 

     string re = rewriter.Process(Request.Path); 
     if (Request.Path != re) 
     { 
      HttpContext.Current.RewritePath(re); 
     } 



    } 

и здесь вы можете проверить строковое значение вашего запроса на событие загрузки страницы default.aspx.

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (Request.QueryString.HasKeys()) { 
      string queryvalue = Request.QueryString["name"]; 
      Response.Write("User Name : " + queryvalue); 

     } 
    } 

я попробовал этот URL и работает нормально ..

локальный: 3030/WEBSITE3/XYZ123

, если он не работает или с узором URL изменилось затем попытаться переопределить URLRule. здесь «xyz123» - это имя. Надеюсь, это сработает ...