À L'Aide De Web.SiteMap Dynamique des URL (URL de Routage)
Je voudrais correspondre à "rapprocher" les matches dans le Web.SiteMap
Le Web.Sitemap statique sitemap fournisseur fonctionne bien, sauf pour une chose. IL EST STATIQUE!
Donc, si je devais avoir un sitemapnode pour chacun des 10 000 articles sur ma page comme ceci :
- site.com/articles/1/article-title
- site.com/articles/2/another-article-title
- site.com/articles/3/another-article-again
- ...
- site.com/articles/9999/the-last-article
Est-il une sorte de mappage de caractères Génériques que je peux faire avec le plan du site pour correspondre à quelque Chose en vertu des Articles?
Ou peut-être dans mon Webforms Page, est-il un moyen de régler Manuellement le nœud actuel?
J'ai trouvé un "peu" d'aide sur cette page lors de cette opération avec la ASP.Net Framework MVC, mais toujours à la recherche d'une bonne solution pour les Webforms.
Je pense que je vais avoir à faire est de créer un SiteMap Fournisseur de
OriginalL'auteur Armstrongest | 2008-11-15
Vous devez vous connecter pour publier un commentaire.
C'est en réponse au commentaire ci-dessus. Je ne peux pas poster le code complet, mais c'est fondamentalement la façon dont mon fournisseur fonctionne.
Supposons que vous avez une page d'article.aspx, et il utilise le paramètre de chaîne de requête "id" pour récupérer et afficher un article, le titre et le corps. Puis c'est dans le Web.sitemap:
Ensuite, vous créez cette classe:
Enfin, vous utilisez ce fournisseur dans votre code comme vous le feriez utiliser la statique fournisseur.
Ma classe est plus compliqué que cela, mais ce sont les bases. Au lieu d'utiliser un paramètre de chaîne de requête, vous pouvez simplement analyser l'url que vous utilisez et de l'utiliser au lieu de récupérer le contenu approprié. Afin de réduire l'augmentation db recherches avec chaque demande, vous pouvez ajouter un mécanisme de mise en cache pour le fournisseur (le titre de l'article en général ne changent pas souvent).
Espère que cette aide.
Comment puis-je utiliser cette classe dans ma page aspx? toute aide s'il vous plaît
OriginalL'auteur user39603
Ce n'est pas entièrement la réponse à votre question, je pense, mais peut-être que cela vous donne une idée. Une fois, j'ai écrit un DynamicSiteMapPath classe héritant SiteMapPath. J'utilise un attribut personnalisé dans chaque
<siteMapNode>
balise Web.plan du site, comme ceci:Puis le DynamicSiteMapPath de classe devient le paramètre "id" de la valeur, récupère le contenu de la base de données, et remplace le rendu sitemap élément de nœud avec le titre et le lien. Ça va prendre un peu de travail, mais une fois fait correctement, c'est une très belle façon de fournir de la dynamique de la page.
OriginalL'auteur user39603
J'ai été en cours d'exécution dans ce problème et, franchement, ne pas trouver les solutions qui m'a fait plaisir... j'ai donc emprunter des idées d'ici et d'ailleurs. Ma solution est multi-partie: a) avoir la SiteMapProvider trouver la page du traitement de la demande et de l'utiliser du nœud et b) l'utilisation des techniques standard pour la mise à jour de la sitemapnode à partir de là.
A) Le problème que je rencontrais, c'est que si je n'avais pas le bon chemin d'accès virtuel, le SiteMap.CurrentNode serait nulle et l'incendie de la SiteMapResolve fonction. Pour résoudre ce que je sous-classé XmlSiteMapProvider et emportait CurrentNode:
Fondamentalement, si l'implémentation par défaut de ne pas trouver quoi que ce soit, regardez en haut de la route (le cas échéant) et d'essayer de trouver le noeud en utilisant le gestionnaire du chemin d'accès virtuel.
Pour référence, voici la partie de mon site Web.Config, Global.asax et fichiers SiteMap:
Ajoutant le fournisseur de
La route:
Et le SiteMap:
B) je sous-classe du Système.Web.L'INTERFACE utilisateur.Page, le bien nommé BaseClass, ce qui ajoute une méthode pour enregistrer des gestionnaires pour la SiteMapResolve événement:
J'ai toujours besoin d'avoir l'Url de la carte de façon appropriée (utilisez l'URL de la page de la réception de la route), qui est sans informations de routage. Je vais probablement utiliser un Attribut personnalisé dans le sitemap à dire le nœud comment rendre l'URL.
OriginalL'auteur Graham