Usunięcie nazw parametrów z adresu url

Usunięcie nazw parametrów z adresu url
DU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 143
0

Cześć,
Możecie mi powiedzieć w jaki sposób mogę usunąć nazwy parametrów z url'a w asp.net mvc 5?
np teraz mam localhost/Shop?page=1&pageSize=10&productId=1 natomiast uzyskac rezultat localhost/Shop/1/10/1/
RouteConfig mam standardowy, przypuszczam, że tutaj coś trzeba zmienić ale nie mam pojęcia co :(

Głowię się już z tym chwilę i nie mogę nic wymyślić.

Z góry dziękuję za odpowiedzi ;)
Pozdrawiam

DE
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 599
0

W sensie pierwszy link działa, a drugi nie? Jak zdefiniowałeś metodę w kontrolerze? (pokaż kod)

DU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 143
0

Dokładnie tak public ActionResult Index(int page = 1, int pageSize = 10, string productId = "")

Natomiast RouteConfig tak jak wspomniałem mam domyślny:

Kopiuj
public static void RegisterRoutes(RouteCollection routes)
{
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Dashboard", action = "Index", id = UrlParameter.Optional }
    );
}
FR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1217
0

Wpisz sobie nad nazwa akcji:
[Route("{page}/{pageSize}/{productId}")]

I dotyczyć to będzie wyłącznie tej akcji.

DU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 143
0

Niestety ale to nie działa. Dalej muszę używać starego url'a. Jakieś inne pomysły?

somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
0

Czyli chcesz mieć dwa formaty URL - jeden z query stringiem, a drugi w formacie samej ścieżki?

  • Rejestracja: dni
  • Ostatnio: dni
0

Nie

DU
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 143
0

Nie, nie chce mieć ten drugi format

Visual Code
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 107
0

Możesz zdefiniować routing w samym kontrolerze. Musisz najpierw odblokować w konfuguracji MvcAttrubuteRoutes.

Kopiuj
  routes.MapMvcAttributeRoutes();

Możesz teraz nadawać atrybuty w kontrolerze, nad samym kontrolerem jak i przed konkretnymi akcjami.

Kopiuj
[RoutePrefix(“page”)]
public class PageController : Controller 
{
  //...
}

W ten sposób żądania zaczynający się od page/ będą przekazywane do tego kontrolera.

Kopiuj
[Route("{page}/{pageSize}/{productId}")]
public ActionResult Show(int page, int pageSize, int productId)
{
  //...
}

W tym przypadku url /page/1/4/32 zostanie zostanie skierowany na Show(int page, int pageSize, int productId) w kontrolerze PageControler.
Zroutowałem kontroler, bo nie wiem jakie masz ustawione domyślne mapowanie routingu. Jeżeli coś takiego, to powinno zadziałać.

Kopiuj
routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.