Frage

Ich bin auf der Suche nach Informationen über Routing in MVC mit C #. Ich bin zur Zeit sehr bewusst die Grundlagen in MVC von Routing, aber was ich suche ist etwas schwierig zu finden.

Effektiv, was ich will zu finden, ist eine Möglichkeit, eine einzelne Route zu definieren, die einen einzigen Parameter.

Die gemeinsamen Beispiele, die ich online gefunden haben alle rund um das Beispiel basiert

routes.MapRoute(
    "Default",
    "{controller}.mvc/{action}/{id}"
    new { controller = "Default", action="Index", id=""});

Durch diese Route zuordnen, können Sie zu jeder Aktion in jedem Controller Karte, aber wenn man etwas in die Aktion übergeben werden soll, muss die Methode Parameter „id“ bezeichnet werden. Ich möchte einen Weg, um dieses zu finden, wenn es möglich ist, so dass ich ständig Routen angeben müssen nicht verwenden nur einen anderen Parameternamen in meinen Handlungen.

Hat jemand eine Idee, oder einen Weg gefunden, um dies?

War es hilfreich?

Lösung

Sie können die Routen konstruieren, wie Sie möchten

routes.MapRoute(
    "Default",
    "{controller}.mvc/{action}/{param1}/{param2}/{param3}"
    new { controller = "Default", action="Index", param1="", param2="", param3=""});

Auch auf diesem Posten sehen , enthält es alle Arten von Proben in den Kommentaren

Andere Tipps

Wenn Sie einen anderen Parameternamen haben und hält das gleiche Routing-Variable, verwenden Sie die FromUri Attribut wie folgt:

public ActionResult MyView([FromUri(Name = "id")] string parameterThatMapsToId)
{
   // do stuff
}

Ihre Routen, alles, was Sie brauchen, ist:

routes.MapRoute(
  "Default",
  "{controller}.mvc/{action}/{id}"
  new { controller = "Default", action="Index", id=""});

Ich glaube nicht, dass Sie genau das tun können, was Sie fordern. Wenn MVC eine Aktion ruft es für die Parameter in Routen sucht, fordern params und die Abfrage-String. Es sieht immer die Parameternamen übereinstimmen.

Vielleicht guter alter Abfrage-String Ihre Wünschen entspricht.

~/mycontroller/myaction/?foobar=123

wird 123 passieren zu dieser Aktion:

public ActionResult MyAction(int? foobar)

Ich weiß, das vor Jahrhunderten, aber hoffen, dass es noch jemand hilft. Ich fragte die gleiche Frage vor. Ich denke, das ist das, was Sie suchen. Eine Antwort aus meiner Frage Post zitiert: „Die {* pathInfo} Bit wird eine Schnecke genannt. Es ist im Grunde ein Platzhalter sagen‚alles nach diesem Punkt in einen Parameter gefüllte pathInfo genannt‘. Wenn Sie also haben‚{Ressource} .axd / {* pathInfo}‘und eine URL wie folgt aus: http://blah/foo.axd/foo/bar/baz/bing dann zwei Parameter erstellt bekommen, eine namens Ressource, die foo und eine namens pathInfo die foo / bar / baz enthält / bing enthalten würde „.

Auch wenn Sie noch nicht das FromUri Attribut verwenden können, können Sie jedoch das Route Attribut verwenden, wie so

[Route("~/Policy/PriorAddressDelete/{sequence}")]
public ActionResult PriorAddressDelete(int sequence)
{
  Policy.RemoveScheduledPriorAddressItem(sequence);
  return RedirectToAction("Information", new { id = Policy.Id });
}

Technisch fügt dies eine neue Route, aber zumindest ist es nicht Ihre routeconfig verunstaltet. Es setzt die Routendefinition rechts durch, wo es verwendet wird, die ich (weniger Jagd Dinge nach unten) mag.

Denken Sie daran, um Attribut-Routing zu verwenden, dies in Ihrer routeconfig Datei muss oben Ihre definierten Routen:

routes.MapMvcAttributeRoutes();
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top