Question

Je il un moyen simple, lorsque vous utilisez ASP.NET 4.0 routage avec des formulaires Web pour produire un itinéraire qui agira comme une sorte de joker?

Il me semble que, dans WebForms, vous devez spécifier un itinéraire pour chaque page - Je cherche une sorte d'itinéraire générique qui peut être utilisé là où est nécessaire rien de précis, la cartographie peut-être directement de chemin de chemin si .. .

http://somedomain.com/folder1/folder2/page serait peut-être la carte à folder1 /folder2/page.aspx

Toutes les suggestions?

Merci

Était-ce utile?

La solution

Vous pouvez faire correspondre tous les itinéraires restants comme ceci:

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

Dans ce cas, nous savons que toutes les routes, et que vous voulez envoyer quoi que ce soit d'autre à un « manque » / 404 page. Assurez-vous de mettre cela comme dernier itinéraire, car il est un caractère générique et attraper tout.

Sinon, vous pouvez enregistrer un itinéraire de la même manière, mais ne interne cartographie à une page, comme ceci:

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

Cette classe de gestionnaire ferait le mappage générique, quelque chose comme ceci:

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;
  }
}

Ceci est un peu cassé dans des endroits bizarres pour éviter le défilement horizontal, mais vous obtenez le point d'ensemble. Encore une fois, assurez-vous que cela est la route dernier , sinon il va gérer tous vos itinéraires.

Autres conseils

De plus - Gardez à l'esprit que vous devez ajouter une exception pour les fichiers .axd dans votre fichier Global.asax s'il y a des contrôles de validation dans votre application web:

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

Dans le cas contraire, vous garderez obtenir une erreur de syntaxe parce que les pics de routage les fichiers .axd et pas correctement charge JavaScript fichiers nécessaires pour les contrôles de validation.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top