Parameter werden in MVC direkt unterstützt, indem Sie Ihren Aktionsmethoden einfach Parameter hinzufügen. Bei einer Aktion wie der folgenden:
public ActionResult GetImages(string artistName, string apiKey)
MVC füllt die Parameter automatisch aus, wenn eine URL wie folgt angegeben wird:
/Artist/GetImages/?artistName=cher&apiKey=XXX
Ein weiterer Sonderfall sind Parameter mit dem Namen "id". Jeder Parameter mit dem Namen ID kann in den Pfad und nicht in den Querystring eingefügt werden.
public ActionResult GetImages(string id, string apiKey)
würde korrekt mit einer URL wie der folgenden ausgefüllt werden:
/Artist/GetImages/cher?apiKey=XXX
Wenn Sie kompliziertere Szenarien haben, können Sie außerdem die Routing-Regeln anpassen, die MVC zum Auffinden einer Aktion verwendet. Ihre global.asax-Datei enthält Routing-Regeln, die angepasst werden können. Standardmäßig sieht die Regel folgendermaßen aus:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
Wenn Sie eine URL wie unterstützen möchten
/Artist/GetImages/cher/api-key
Sie können eine Route hinzufügen wie:
routes.MapRoute(
"ArtistImages", // Route name
"{controller}/{action}/{artistName}/{apikey}", // URL with parameters
new { controller = "Home", action = "Index", artistName = "", apikey = "" } // Parameter defaults
);
und eine Methode wie das erste Beispiel oben.
Ab MVC 5 können Sie auch das Attribut-Routing verwenden, um die URL-Parameterkonfiguration auf Ihre Controller zu verschieben.
Eine ausführliche Diskussion finden Sie hier: http://blogs.msdn.com/b/webdev/archive/2013/10/17/attribute-routing-in-asp-net-mvc-5.aspx
Zusammenfassung:
Zuerst aktivieren Sie das Attribut-Routing
Anschließend können Sie mithilfe von Attributen Parameter und optional Datentypen definieren
quelle
Sie können beliebige Parameter über die Abfragezeichenfolge übergeben, aber Sie können auch benutzerdefinierte Routen einrichten, um diese REST-fähig zu behandeln:
Das könnte sein:
Wenn also jemand die folgende Route benutzt hat:
Es würde sie an den gleichen Ort bringen, an dem sich Ihr Beispiel-Querystring befand.
Das Obige ist nur ein Beispiel und wendet nicht die Geschäftsregeln und -einschränkungen an, die Sie einrichten müssen, um sicherzustellen, dass die URL nicht von Personen "gehackt" wird.
quelle