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