Frage

ich es eine einfache Möglichkeit, wenn ASP.NET 4.0-Routing mit Web Forms mit einer Route zu erzeugen, die als eine Art Platzhalter handeln?

Es scheint mir, dass in WebForms, müssen Sie für jede Seite eine Route angeben - ich bin für eine Art von generischem Weg suchen, der verwendet werden kann, wo nichts Konkretes erforderlich ist, vielleicht direkt von Bahn zu Bahn Mapping so .. .

http://somedomain.com/folder1/folder2/page würde Karte möglicherweise folder1 /folder2/page.aspx

Irgendwelche Vorschläge?

Danke

War es hilfreich?

Lösung

Sie können alle restlichen Routen entsprechen wie folgt aus:

routes.MapPageRoute("defaultRoute", "{*value}", "~/Missing.aspx");

In diesem Fall wissen wir alle Routen und wollen etwas anderes zu einer „fehlenden“ / 404-Seite senden. Nur sicher sein, dies als letzte Route zu setzen, da es ein Platzhalter und wird alles fangen.

Alternativ können Sie eine Route auf die gleiche Weise registrieren, aber intern hat die Zuordnung zu einer Seite, wie folgt aus:

routes.Add(new Route("{*value}", new DefaultRouteHandler()));

Das Handler-Klasse tun würde Ihre Wildcard-Mapping, so etwas wie folgt aus:

public class DefaultRouteHandler : IRouteHandler
{
  public IHttpHandler GetHttpHandler(RequestContext requestContext)
  { 
    //Url mapping however you want here:
    var pageUrl = requestContext.RouteData.Route.Url + ".aspx";

    var page = BuildManager.CreateInstanceFromVirtualPath(pageUrl, typeof(Page)) 
               as IHttpHandler;
    if (page != null)
    {
      //Set the <form>'s postback url to the route
      var webForm = page as Page;
      if (webForm != null) 
         webForm.Load += delegate { webForm.Form.Action = 
                                    requestContext.HttpContext.Request.RawUrl; };
    }
    return page;
  }
}

Das ist ein bisschen in den ungeraden Stellen gebrochen horizontales Scrollen zu vermeiden, aber Sie den gesamten Punkt. Wieder stellen Sie sicher, dass dies die letzte Route, sonst wird es handle alle Ihre Routen.

Andere Tipps

Zusätzlich - Beachten Sie, dass Sie benötigen eine Ausnahme für die .axd Dateien in Ihrer Datei Global.asax hinzufügen, wenn es Überprüfungs-Steuerelemente in Ihrem Web-App ist:

http://basgun.wordpress.com/2010/10/25/getting-syntax-error-in-asp-net-routing-due-to-webresource-axd/

Ansonsten halten Sie einen Syntaxfehler bekommen, weil der Routing nimmt die .axd Dateien und nicht richtig lädt das JavaScript für die Überprüfungs-Steuerelemente benötigten Dateien.

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