2010-06-05 5 views
1

Я начал работать на сайте без перезаписи URL. Теперь запрос заключается в использовании дружественных URL-адресов, поэтому я начал использовать Intelligencia.UrlRewriter.url rewriting - строить пути

Давайте рассмотрим пример:

У меня есть метод:

public static string getCategoriesIndexLink(string category) 
{ 
    string baseUrl = getBaseUrl() + (String)HttpContext.GetGlobalResourceObject("Paths", "categorii.index"); 
    return baseUrl.AddQueryParam(CQueryStringParameters.CATEGORY, category); 
} 

, которые строят этот вид URLs

"~/Site/Categorii.aspx?category=$1" 

Теперь я добавил следующее правило в web.config :

<rewrite url="~/Site/Categorii/(.+)" to="~/Site/Categorii.aspx?category=$1" /> 

Вопрос: КАК Я могу сделать вышеприведенный метод для создания такого хорошего URL-адреса? Так больше не возвращаться

"~/Site/Categorii.aspx?category=m1" 

но

"~/Site/Categorii/m1" 

без неоспоримым нужно изменить свою структуру?

Я имею в виду, у меня есть около 30 методов, подобных одному из вышеперечисленных; было бы крайне полезно, если я могу руководствоваться, чтобы использовать регулярное выражение на выходе методов изо модифицирующих строительства URL-адрес ...

Спасибо заранее ...

ответ

0

вы можете использовать что-то вроде этого

Match mExprStatic = Regex.Match([email protected]"/Site/Categorii/m1", [email protected]"/site/categorii/(?<category>\S*)", RegexOptions.IgnoreCase | RegexOptions.Singleline); 
if (mExprStatic.Success || !string.IsNullOrEmpty(mExprStatic.Value)) 
{ 
    string parameters = "?" + mExprStatic.Groups["category"].Value; 
    if ((context.Request.QueryString.AllKeys != null) && (context.Request.QueryString.AllKeys.Length > 0)) 
    { 
     foreach (string key in Request.QueryString.AllKeys) 
       parameters += "&" + key + "=" + Request[key]; 
    } 
    Server.Transfer("~/Site/Categorii.aspx" + parameters , false);