2008-12-13 7 views
18

Dans l'application sur laquelle je travaille, je souhaite autoriser l'utilisateur à télécharger des pages HTML statiques pour remplacer la page MVC View "profil utilisateur" par défaut. Est-ce possible? Autrement dit, les pages html téléchargées par l'utilisateur seront totalement à court de MVC, et peuvent inclure ses propres liens CSS, etc.ASP.NET MVC: Comment utiliser les pages HTML statiques dans les applications MVC?

Idées? Suggestions?

Répondre

22

Évidemment, le framework .net MVC gère déjà le contenu statique pour les images/css/js etc. Il suffirait d'étendre ce (routage?) Pour passer les fichiers .html directement à IIS. Cela couplé avec une pincée de réécriture pour faire des urls plus jolies devrait faire l'affaire. Cependant, je serais très, très méfiant de permettre le contenu généré par l'utilisateur sous la forme de téléchargements HTML bruts que vous laissez une porte très très large ouverte. Au mieux, vous allez vous retrouver avec des pages pleines de spam/porn/publicités. Au pire, vous fournirez une passerelle permettant aux utilisateurs de télécharger des hacks de scripts inter-sites et de télécharger du contenu malveillant pour endommager votre site. Il pourrait facilement prendre un formulaire existant sur votre site, y insérer un chargement de courrier indésirable, l'exécuter à partir de sa page d'accueil et casser tout un tas de choses. À tout le moins, vous devriez analyser le contenu téléchargé pour le réduire à un bloc de contenu, puis en l'enveloppant dans votre propre, etc. Personnellement, je serais beaucoup plus enclin à fournir aux utilisateurs un joli WYSIWYG éditeur pour éditer un seul bloc de contenu - tout éditeur digne de ce nom devrait vous fournir des informations sur les éléments qu'il inclut/exclut. Ensuite, stockez ce fragment de contenu dans votre base de données/sur un disque et demandez à une page d'accueil de passer par une route de contrôleur MVC standard et de charger ce contenu.


Edition - pour vous demander des exemples Vous devriez être en mesure d'ajouter une règle Ignorer votre routage - il y aura probablement déjà des exemples de ces déjà - fissure ouvrir votre fichier Global.asax - vous voulez mettre dans un appel à la méthode routes.IgnoreRoute:

routes.IgnoreRoute("UserPages/{*path}"); 

devrait laisser gérer IIS toutes les demandes de yourwebsite.com/UserPages/aUser/homepage.html - vous pouvez également jouer d'un peu plus avec les fragments de cartes sauvages/contraintes pour les solutions plus jolies

0

Je vous suggère de créer votre ViewEngine personnalisé qui vous permettra d'utiliser le balisage html statique avec des balises personnalisées, qui seront remplacées par des informations utilisateur.

Ainsi, votre moteur de vue peut accepter quelque chose comme ça:

<html> 
    <body> 
     <b><user:FirstName /></b> 
     <b><user:LastName /></b> 
    </body> 
</html> 

et produire

<html> 
    <body> 
     <b>First Name</b> 
     <b>Last Name</b> 
    </body> 
</html> 

Ce balisage personnalisé que vous pouvez stocker dans la base de données, par exemple. Vous pouvez consulter les implémentations personnalisées de ViewEngine au MVC Contrib project.

Questions connexes