Ich habe diese beiden Routen in meiner App konfiguriert:ASP.NET MVC 3 Url.Action falsche Weg abgebildet
routes.MapRoute(
"PromotionModel-test", // Route name
"testSpecifications", // URL with parameters
new { controller = "test", action = "Brochure", modelName = "test", groupID = 0 } // Parameter defaults
);
routes.MapRoute(
"", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { groupID = 0, controller = "Home", action = "List", id = UrlParameter.Optional, CatID = 0 },
new {controller = @"\w{3,}"}
);
Als ich
@Url.Action("Brochure", "test")
rufen die URL es erzeugte „/ testSpecifications "statt" Test/Broschüre ". Wenn ich das explizit mache
Dann wird es das richtige Ergebnis erzeugen.
Ich weiß, gibt es Segment Variablenwiederverwendungsszenario, aber wie gilt es hier? Was ist die Logik hinter der Szene?
Updates
Was ich hier erreichen wollen ist einfach die URL zu erzeugen, ich alle Parameter, ohne dass Werte explizit oben hatte.
Stellen Sie sich vor, Sie haben mit der Entwicklung einer Website begonnen, für die keine Parameter benötigt wurden. Später haben Sie bemerkt, dass Sie möglicherweise mehrere Additionsparameter hinzufügen müssen. Im obigen Beispiel wurde der neue Parameter "modelName" hinzugefügt. Und dann bitten Sie den Client, die "testSpecifications" zuzuordnen, um auf die spezifische Seite wie die obige zu mappen.
Wir wollen definitiv nicht alle Url.Action aktualisieren, um die Standardwerte für jede von ihnen zu aktualisieren. Welchen Ansatz würden Sie verwenden, um damit umzugehen?
Hoffnung des Sinn ....
erm .... Wie passt es zur ersten Route? Es erfordert den Modellnamen zu "Test". Ich habe den Modellnamen in der "Url.Action (" Brochure "" test ") überhaupt nicht übergeben." – Jack
Nein, Sie legen den Standardwert fest –
Also sagen Sie, wenn ich den Modellnamen nicht speziell festlege, wird er der ersten Route entsprechen, weil die Action- und Controller-Namen übereinstimmen und der Rest-Parameter als Standardwert behandelt wird, anstatt ihn zu verwenden als Voraussetzung für die Übereinstimmung? – Jack