2009-08-25 9 views
0

Chaque fois que le routage .NET est inclus dans mon web.CONFIG, j'obtiens une erreur sys indéfinie qui empêche le chargement d'ajax..NET ROUTING et ajax sys undefined

J'utilise .net 3.5 w/C#

toute aide serait très apprécié.

+0

Il y a déjà une très bonne réponse par [Haacked] (http://stackoverflow.com/users/598/haacked) [ici] (http://stackoverflow.com/questions/273447/how-to-ignore -route-dans-asp-net-formes-url-routage # réponse-276036). Résolu mon problème au moins. – Shagglez

Répondre

0

Vous devez utiliser la route Contraint vos itinéraires, cela signifie que vous devez ajouter une RouteValueDictionary en exemple la route dans la propriété CONTRAINTES

L'exemple suivant montre comment utiliser un dossier virtuel pour indiquer le UICulture.

par exemple:

RouteTable.Routes.Add(new Route("{locale}/{page}", new CultureRouter()) 
{ 
    Constraints = new RouteValueDictionary() { 
     { "locale", "[a-z]{2}-[a-z]{2}" } , 
     { "page", "([a-z0-9]*).aspx" } 
    } 
}); 
RouteTable.Routes.Add(new Route("{folder}/{page}", new CultureRouter()) 
{ 
    Constraints = new RouteValueDictionary() { 
     { "page", "([a-z0-9]*).aspx" } 
    } 
}); 
RouteTable.Routes.Add(new Route("{locale}/{folder}/{page}", new CultureRouter()) 
{ 
    Constraints = new RouteValueDictionary() { 
      { "locale", "[a-z]{2}-[a-z]{2}" } , 
      { "page", "([a-z0-9]*).aspx" } 
    } 
}); 

Dans ce cas, cette voie évaluer une expression régulière pour clé locale, et la clé de page, puis vous devez évaluer toutes les clés de votre classe IRouteHandler

par exemple:

public IHttpHandler GetHttpHandler(RequestContext requestContext) 
{ 
    StringBuilder virtualPath = new StringBuilder("~/Pages/"); 

    if (requestContext.RouteData.Values.ContainsKey("locale")) 
    { 
     Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(requestContext.RouteData.Values["locale"].ToString()); 
    } 

    if (requestContext.RouteData.Values.ContainsKey("folder")) 
    { 
     virtualPath.AppendFormat("{0}/", requestContext.RouteData.Values["folder"].ToString()); 
    } 

    if (requestContext.RouteData.Values.ContainsKey("page")) 
    { 
     virtualPath.Append(requestContext.RouteData.Values["page"].ToString()); 
    } 

    IHttpHandler pageHandler = BuildManager.CreateInstanceFromVirtualPath(virtualPath.ToString(), typeof(Page)) as IHttpHandler; 

    return pageHandler; 
} 

J'espère que cela va vous aider.