ASP.Net MVC3 ist cool und alle, aber ich habe diese Frage mehr aus Neugier als Programmierungsprobleme. Angenommen, ich habe einen Bereich namens "Cosmos", in dem es einen "StarController" mit einer "Index" -Aktion gibt.
Wenn ich nun eine Aktionsverbindung zu dieser erstellen müsste, was ist der Unterschied zwischen diesen beiden Aussagen?
Html.ActionLink("Stars", "Index", "Stars", new { area = "Cosmos" }, null)
und
Html.ActionLink("Stars", "Index", "Cosmos/Stars")
Nach dem Aussehen sind sie genau das Gleiche. Wenn es tatsächlich dasselbe tut, was nützt der anonyme Typ {area = "Kosmos"}?
Antworten:
3 für die Antwort № 1Im zweiten Beispiel setzen Sie die controllerName
Argument zu Cosmos/Stars
was falsch ist. Ein Controller kann nicht auf diese Weise aufgerufen werden. Es erzeugt das korrekte Ergebnis, weil der Helfer das Argument einfach unverändert verwendet, aber Sie haben angenommen, dass Ihre Routen einen bestimmten Stil haben. In dem Moment, in dem Sie Ihre Routing-Definition ändern, generiert dieser Link weiterhin das gleiche Markup, das falsch sein könnte. Im ersten Beispiel verlassen Sie sich nicht mehr auf ein fest codiertes URL-Muster. Es wird immer die richtige URL generieren, egal wie Ihre Routen und Bereiche konfiguriert sind.