MVC-Routenkarte mit Ausnahme für Html.RenderAction: Keine Route in der Routentabelle stimmt mit den angegebenen Werten überein

Ich verwende ASP.NET MVC 5 und dies ist meine Routenkarte für alle Aktionen außerHome/index:

 routes.MapRoute(
                name: "randomNumber",
                url: "{controller}/{randomNumber}/{action}",
                defaults: new { },
                constraints: new { randomNumber = @"\d+" }
            );

Und für die erste Seite:Home/Index Ich möchte nicht verwenden{randomNumber}

Die erste Lösung, die ich denke, ist:

routes.MapRoute(
                 name: "Default",
                 url: "{controller}/{action}",
                 defaults: new { controller = "Home", action = "Index" }
            );

Diese Routenkarte hat mein Problem gelöst, aber ein anderes Problem verursacht: Clients können auf andere Aktionen zugreifen, ohne{randomNumber}, aber ich will nur dieIndex Wirkung vonHome Controller ohne Zufallszahl zugegriffen.

Die andere Lösung ist:

  routes.MapRoute(
                     name: "Default",
                     url: "Home/Index",
                     defaults: new { controller = "Home", action = "Index" }
                );

Aber mit dieser Karte kann ich nicht zugreifenHome/index mit root url muss ich zugreifenHome/index mit root url wie folgt:www.mydomainaddress.com

Endlich habe ich folgendes gefunden:

   routes.MapRoute(
                     name: "Default",
                     url: "",
                     defaults: new { controller = "Home", action = "Index" }
                );

Aber ich habe die Ausnahme bekommen:No route in the route table matches the supplied values. aufindex.cshtml Datei in dieser Zeile:@{Html.RenderAction("ArchiveList", "Home");}

Ich kenne die Zusammenstellung der von mir hinzugefügten Streckenkarte und nichtRenderAction Helfer?

Wenn ich jedoch die beiden folgenden Routenkarten hinzufüge, ist alles in Ordnung:

   routes.MapRoute(
                     name: "Default",
                     url: "",
                     defaults: new { controller = "Home", action = "Index" }
                );

 routes.MapRoute(
               name: "HomeActions",
               url: "Home/{action}",
               defaults: new { controller = "Home" }
           );

Wie Sie wissen, kann ich die zweite Kartenroute nicht hinzufügen. (Ich benötige alle Aktionen, auf die mit einer Zufallszahl zugegriffen werden kann.)

Ich kann nicht verstehen, was passiert ist, als ich das hinzufügeDefault Karte, und was im Zusammenhang mitRenderAction Helfer?

Hat jemand eine Ahnung davon? irgendein Vorschlag?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage