Parametry są bezpośrednio obsługiwane w MVC, po prostu dodając parametry do metod akcji. Biorąc pod uwagę akcję podobną do poniższej:
public ActionResult GetImages(string artistName, string apiKey)
MVC automatycznie wypełni parametry po otrzymaniu adresu URL, takiego jak:
/Artist/GetImages/?artistName=cher&apiKey=XXX
Dodatkowym specjalnym przypadkiem są parametry o nazwie „id”. Dowolny parametr o nazwie ID można umieścić w ścieżce, a nie w zapytaniu, więc coś takiego:
public ActionResult GetImages(string id, string apiKey)
zostanie poprawnie wypełniony adresem URL takim jak ten:
/Artist/GetImages/cher?apiKey=XXX
Ponadto, jeśli masz bardziej skomplikowane scenariusze, możesz dostosować reguły routingu, których MVC używa do lokalizowania akcji. Twój plik global.asax zawiera reguły routingu, które można dostosować. Domyślnie reguła wygląda następująco:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
Jeśli chcesz obsługiwać adres URL, taki jak
/Artist/GetImages/cher/api-key
możesz dodać trasę taką jak:
routes.MapRoute(
"ArtistImages", // Route name
"{controller}/{action}/{artistName}/{apikey}", // URL with parameters
new { controller = "Home", action = "Index", artistName = "", apikey = "" } // Parameter defaults
);
i metodę taką jak w pierwszym przykładzie powyżej.
Począwszy od MVC 5, możesz również użyć routingu atrybutów, aby przenieść konfigurację parametrów adresu URL do kontrolerów.
Szczegółowa dyskusja jest dostępna tutaj: http://blogs.msdn.com/b/webdev/archive/2013/10/17/attribute-routing-in-asp-net-mvc-5.aspx
Podsumowanie:
Najpierw włącz routing atrybutów
Następnie możesz użyć atrybutów do zdefiniowania parametrów i opcjonalnie typów danych
źródło
Możesz przekazać dowolne parametry przez ciąg zapytania, ale możesz również skonfigurować niestandardowe trasy, aby obsłużyć je w sposób REST:
To mogłoby być:
Więc jeśli ktoś skorzystał z następującej trasy:
To doprowadziłoby ich do tego samego miejsca, co twój przykładowy querystring.
Powyższe jest tylko przykładem i nie stosuje reguł biznesowych i ograniczeń, które musisz skonfigurować, aby upewnić się, że ludzie nie „włamują” adresu URL.
źródło