ASP.Net MVC: Also warten Sie ... Standardroute Parameter muss id genannt werden?

StackOverflow https://stackoverflow.com/questions/1004331

  •  05-07-2019
  •  | 
  •  

Frage

Hat jemand dieses Problem gehabt? Ich habe etwas falsch sein.

So Ich gründe eine Route für Fehler wie diese auf:

routes.MapRoute
(
 "SharedError",
 "Shared/Error/{error}",
 new { error = "" }
);

Und Aufruf wie:

return parentController.RedirectToRoute("SharedError", new RouteValueDictionary(new { error = errorMessage.ToString() }));

Und auf dem Controller:

public ActionResult Error(String error)

Einfach nicht wahr? Nun, wenn dies tatsächlich ausgeführt wird, Fehler null ist trotz der URL aussehen wie:

/ Shared / Error / ThisIsTheError

Aber der Fehlerparameter in der Error-Methode ist null. (Und ja, ich habe also versucht)

Wenn ich nun alles, was mit dem Wort ‚id‘ ersetzen alles funktioniert.

Global.asax.cs

routes.MapRoute
(
 "SharedError",
 "Shared/Error/{id}",
 new { id = "" }
);

Redirect:

return parentController.RedirectToRoute("SharedError", new RouteValueDictionary(new { id = errorMessage.ToString() }));

Shared Controller:

public ActionResult Error(String id)

Ist id ein Wort für alle Routen haben müssen, wenn Sie eine Standardroute in einem Wert unter haben?

War es hilfreich?

Lösung

Sie immer brauchen, um die Controller und die Aktion Parameter angeben:

routes.MapRoute
(
 "SharedError",
 "Shared/Error/{error}",
 new { controller = "Shared", action="Error", error = "" }
);

Ich vermute, dass der Grund, warum id für Sie arbeitet mit, weil Sie die Standardroute noch registriert haben, die ID als Parameter und Standardwerte für die Controller und die Aktion hat.

Beachten Sie, wenn Sie immer noch die Standardroute haben, stellen Sie sicher, dass Sie Ihre Route hinzufügen, bevor es, sonst wird es den anderen passen zuerst.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top