2009-06-16 8 views
0

Hat jemand anderes dieses Problem? Ich muss etwas falsch machen.ASP.Net MVC: Also warte ... Der Default Route Parameter muss ID benannt werden?

eine Route für Fehler wie diese So Einrichten ich:

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 richtig? 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 andere Wörter versucht)

Jetzt, wenn ich alles mit dem Wort "Identifikation" ersetze, funktioniert alles.

Global.asax.cs

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

Redirect:

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

Geteilt Controller:

public ActionResult Error(String id) 

Ist id ein Wort für alle Routen haben müssen, wenn Sie eine Standardroute haben einen Wert annehmen?

Antwort

5

Sie müssen immer die Controller und die Aktion Parameter angeben:

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

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

Hinweis, wenn Sie noch die Standardroute haben, stellen Sie sicher, dass Sie Ihre Route vor es hinzufügen, andernfalls wird es zuerst die andere übereinstimmen.

+0

Richtig, aber es sollte neu sein {controller = "Shared", action = "Error", error = ""} – CoderDennis

+0

Versucht, dass noch aufgebockt ist. –

+0

Korrigiert (obwohl ich nicht glaube, dass das OP seinen Controller-Namen erwähnt hat). – DSO

Verwandte Themen