Ich baue das Front-End einer Anwendung neu und aufgrund seiner Komplexität muss ich auf der bestehenden Legacy-Business-Schicht arbeiten. Als Ergebnis haben wir Dinge, die "Nachrichten" und "Dokumente" genannt werden, aber in Wirklichkeit sind beide "Dokumente", wo sie gespeichert sind.Url.Action Ergebnis wird nicht aufgelöst mit Route Attribut
Ich habe eine DocumentsController gemacht, die alles gut behandelt, schlägt eine [Route("News/{action=index}")]
und [Route("Documents/{action=index}")]
auf dem Controller ermöglicht es mir, den Controller als entweder News oder Dokumente beziehen. So weit, ist es gut. Das Anzeigen eines bestimmten Dokuments unter Verwendung eines einzelnen ActionResult
mit den Attributen [Route("Documents/View/{id}"]
und [Route("News/View/{id}"]
funktioniert auch gut. Allerdings bekomme ich ein Problem, wenn ich versuche, etwas anderes als id
als Parameter zu verwenden, aber nur für den Nachrichtenteil.
Meine ActionResult
Methode hat die folgende Definition
[Route("Documents/Download/{documentGuid}/{attachmentGuid}")]
[Route("News/Download/{documentGuid}/{attachmentGuid}")]
public ActionResult Download(Guid documentGuid, Guid attachmentGuid)
...
Und mein Blick hat im Anschluss an die Sie den Link
<a href="@Url.Action("Download", "Documents", new { documentGuid = Model.Id, attachmentGuid = attachment.AttachmentId })">Download</a>
Diese
erhalten einen Link ähnlich site/Documents/Download/guid/guid
perfekt jedes Mal, wenn ich „Dokumente“ haben Als der Controller, aber wenn ich "News" dort stelle, erhalte ich eine URL, die Querystring ähnlich den site/News/Download?guid&guid
Parametern verwendet und in ein 404 aufgelöst wird. Wenn ich dann manuell die Querystring-Tokens entferne und die URL man formatiere Natürlich wird es sich gut lösen.
Was läuft hier falsch, ist etwas widersprüchlich, dass ich vermisse?
Dank für die ausführliche Antwort, das war genau das Problem und eine Arbeitslösung:) – Perry