2010-02-03 8 views
1

J'ai un contrôleur sur mon site qui gère les actions inconnues et renvoie une vue si elle existe. Ceci permet d'ajouter du contenu statique à cette zone particulière du site sans avoir à modifier le contrôleur. Le problème auquel je suis confronté maintenant est de créer un fichier sitemap.xml qui contient des liens vers toutes ces vues "inconnues". Quelle est la meilleure méthode d'énumération de ces vues de contenu statique à partir de ma méthode qui génère la carte du site?ASP.NET MVC: Comment obtenir toutes les vues disponibles?

Le code ci-dessous montre ce que je fais pour les actions inconnues:

protected override void HandleUnknownAction(string actionName) 
{ 
    GetUnknownActionResult(actionName).ExecuteResult(ControllerContext); 
} 

[NonAction] //public so it is testable 
public ActionResult GetUnknownActionResult(string actionName) 
{ 
    var result = View(actionName); 

    if (result.ViewEngineCollection.Any(engine => engine.FindView(ControllerContext, result.ViewName, null, true).View != null)) 
    { 
     return result; 
    } 

    return new HttpNotFoundResult(); 
} 
+1

Statique? Pourquoi ne l'avez-vous pas simplement mis dans le dossier de contenu (ou un sous-dossier de celui-ci) comme un fichier htm? – tvanfosson

+0

Le contenu n'est pas vraiment statique, car il doit être affiché dans le contexte d'une page maître (elle-même dotée d'éléments dynamiques). Bien que, peut-être le problème est un design et je devrais envisager de charger le HTML dans le maître. Ne change pas la question si ... aimerait toujours connaître la "meilleure" façon d'énumérer les vues qui sont associées à un contrôleur particulier. À l'heure actuelle, j'ai utilisé uniquement Server.MapPath() avec une chaîne codée en dur dans le dossier de vue. Si c'est le meilleur moyen, qu'il en soit ainsi. – mkedobbs

Répondre

1

Si vous êtes au service du contenu statique tels que les fichiers .htm et les fichiers .pdf à partir d'un répertoire « contenu statique », je voudrais juste utilisez System.File.IO pour énumérer ces fichiers et créez vos liens à partir de ces fichiers.

+0

Ce ne sont pas des contenus réellement statiques, car ce sont des vues utilisant une page maître. Je n'ai aucun problème en utilisant System.File.IO pour lire le répertoire, mais j'espérais qu'il y avait une meilleure façon d'énumérer les vues. – mkedobbs

+1

Il ya une aide Sitemap XML ici: http://www.asp-net-mvc.com/MvcHelpers/XmlSitemap, mais je ne sais pas si cela s'applique à votre situation. –

Questions connexes