2009-07-21 2 views
1

Есть ли простой способ генерации нового URL-адреса маршрута без всякой этой ошибки.Как изменить URL-адрес ASP.net MVC

Я сейчас Handling несколько маршрутов в ту же точку зрения, все из которых заканчиваются /{} PageNumber

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

Я пытался избежать использования URL-создателя, поскольку он кажется чересчур избытком для разбивки на страницы, но все предложения приветствуются & hellip;

Heres метод им с помощью для пагинации

#region Create View Pagination 
/// <summary> 
/// Create Pagination For Display 
/// </summary> 
/// <param name="TotalPgs"></param> 
/// <param name="currentPg"></param> 
/// <returns></returns> 
private string pagnationStr(int TotalPgs, int currentPg) 
{ 
    string tmp = ""; 
    string URLX = ""; 

    URLX = string.Format("{0}", base.Request.Url); 

    int pageSet = 10; 

    //Previous Link 
    if (currentPg > 1) tmp += "<li><a href='" + URLX + (currentPg - 1) + "'>Previous</a></li>"; 

    //Standard Pagination 
    tmp += "<ul class=\"pagination\">"; 
    for (int i = currentPg; i < TotalPgs; i++) 
    { 
     tmp += "<li><a href='" + URLX + i + "'>" + i.ToString() + "</a></li>"; 
     if (pageSet < 1) break; 
     pageSet--; 
    } 
    tmp += "</ul>"; 

    return tmp; 
} 
#endregion 
  • различных бит этого обычно приходят от приложения-настройки я заменил их с цифрами, чтобы быть полными.

ответ

3

Маршрутизация работает по-разному - она ​​будет принимать URL-адрес запроса и соответствовать правильному ресурсу, или вы можете запросить маршрутизацию для создания URL-адреса на основе параметров, которые у вас есть.

RouteCollection.GetVirtualPath(
           context, 
           new RouteValueDictionary(
             {param1name, param1value}, 
             {param2name, param2value}... 
           ) 
           ); 

Это даст вам URL-адрес ресурса, который вы хотите, на основе ваших значений параметров.
Если вы передадите «controller» = «whatever», «action» = «whatever» и «pagenumber» = currentpg, вы должны получить URL-адрес, который вы хотите, без ручного анализа URL-адресов. Это также более масштабируемо, если ваши маршруты изменятся в будущем.

Любые дополнительные параметры, которые вы передаете в GetVirtualPath, которые не потребляются при сопоставлении маршрута, будут добавляться как параметры запроса.