2010-10-19 17 views
1

Mon site comporte de nombreuses routes. puisque les utilisateurs peuvent ajouter ou supprimer des pages à volonté, j'ai besoin d'un moyen de réenregistrer les routes de temps en tempsSuppression de routes spécifiques d'ASP.NET 4 RoutesTable

à reregister je ne veux pas effacer le cache d'itinéraire entier ("RouteTable.Routes.Clear"), mais je préfère aller à travers la table route par route, et en utilisant une certaine regex sur son nom, décider si le supprimer ou non.

après que je vais réinscrire les pages spécifiques que je dois

Heres mon code quant à lui

 For Each r In RouteTable.Routes 
      If CType(r, Route).DataTokens("ConfigID") = ConfigID Then RouteTable.Routes.Remove(r) 
     Next 

après la première enlever renvoie une erreur « a été modifiée Collection, l'opération d'énumération ne peut pas exécuter. "

merci beaucoup pour votre aide !!

Répondre

2

Il n'est pas possible d'obtenir le nom de l'itinéraire car celui-ci n'est pas une propriété de l'itinéraire. Lors de l'ajout d'itinéraires à RouteTable, le nom est utilisé comme index interne pour l'itinéraire et il n'est jamais exposé.

Il existe un moyen de le faire. Lorsque vous enregistrez un itinéraire, définissez un DataToken sur l'itinéraire avec le nom de l'itinéraire et utilisez-le pour filtrer les itinéraires. La façon la plus simple de faire # 1 est probablement d'écrire vos propres méthodes d'extension pour les routes de mappage.

+0

hi. Merci. bonne idée. S'il vous plaît c mon code maintenant. J'obtiens maintenant une erreur "La collection a été modifiée, l'opération d'énumération peut ne pas s'exécuter." cette erreur est familière, donc je pensais mal juste construire une nouvelle routecollection et le nourrir à la routetable, mais son readonly. Alors, que pouvons-nous faire? –

+0

salut. Quelqu'un peut-il m'aider? –