Frage

Ich bin neu in MVC (und ASP.Net routing).Ich versuche, die Karte *.aspx an einen controller namens PageController.

routes.MapRoute(
   "Page",
   "{name}.aspx",
   new { controller = "Page", action = "Index", id = "" }
);

Wäre das nicht der obige code Karte *.aspx zu PageController?Wenn ich diesen starte, und geben Sie alle .aspx-Seite bekomme ich die folgende Fehlermeldung:

Der controller für den Pfad '/Seite.aspx' konnte nicht gefunden werden oder es nicht implementiert IController-Schnittstelle.Parameter name:controllerType

Gibt es etwas, was ich nicht mache hier?

War es hilfreich?

Lösung

Ich beantwortete meine eigene Frage.Ich hatte die Strecken rückwärts (Standard war oberhalb der Seite).

Ja, Sie haben, um alle Routen über die Standard-route.

Also das bringt die nächste Frage...wie funktioniert die "Default" - route überein (ich übernehmen Sie reguläre Ausdrücke verwenden hier) die "Seite" route?

Die Standard-route entspricht, basierend auf dem, was wir nennen-Konvention über die Konfiguration.Scott Guthrie, erklärt er auch in seinem ersten blog-post ASP.NET MVC.Ich empfehle, dass Sie Lesen Sie durch Sie und auch seine anderen Beiträge.Beachten Sie, dass diese gebucht wurden auf der Grundlage der ersten CTP-Version und der Rahmen hat sich geändert.Sie können auch ein web-cast auf ASP.NET MVC auf der asp.net Website von Scott Hanselman.

Andere Tipps

Ich beantwortete meine eigene Frage.Ich hatte die Strecken rückwärts (Standard war oben genannten Seite).Unten ist die richtige Reihenfolge.Also das bringt die nächste Frage...wie funktioniert die "Default" - route überein (ich nehme an, Sie verwenden reguläre Ausdrücke hier) die "Seite" route?

routes.MapRoute(
            "Page",
            "{Name}.aspx",
            new { controller = "Page", action = "Display", id = "" }
        );

        routes.MapRoute(
            "Default",                                              // Route name
            "{controller}/{action}/{id}",                           // URL with parameters
            new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
        );

Auf einer von Rob Conery MVC Storefront screencasts, er trifft auf genau dieses Problem.Es ist an der rund um den 23-Minuten-Marke, wenn Sie interessiert sind.

Nicht sicher, wie Sie Ihre controller sieht, der Fehler scheint zu sein, zeigt die Tatsache, dass es kann nicht finden die controller.Haben Sie Erben aus der Controller nach dem erstellen der PageController Klasse?Ist der PageController befindet sich im Controller-Verzeichnis?

Hier ist meine route in der Globalen.asax.cs

routes.MapRoute(
    "Page", 
    "{Page}.aspx", 
    new { controller = "Page", action = "Index", id = "" }
);

Hier ist mein controller, die sich im Controller-Ordner:

using System.Web.Mvc;

namespace MvcApplication1.Controllers
{
    public class PageController : Controller
    {
        public void Index()
        {
            Response.Write("Page.aspx content.");
        }
    }
}
public class AspxRouteConstraint : IRouteConstraint
{
    #region IRouteConstraint Members

    public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
    {
        return values["aspx"].ToString().EndsWith(".aspx");
    }

    #endregion
}

registrieren Sie die route für alle aspx

  routes.MapRoute("all", 
                "{*aspx}",//catch all url 
                new { Controller = "Page", Action = "index" }, 
                new AspxRouteConstraint() //return true when the url is end with ".aspx"
               );

Und Sie können testen Sie die Routen, indem MvcRouteVisualizer

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