Comment servir un fichier html à partir d'un autre répertoire que ActionResult
J'ai spécialisées cas où je souhaite servir droite un fichier html à partir d'un Contrôleur de l'Action.
Je veux l'utiliser à partir d'un autre dossier autre que le dossier Vues. Le fichier est situé dans
Solution\Html\index.htm
Et je veux le servir d'une norme d'action du contrôleur. Pourrais-je utiliser return Fichier? Et
comment puis-je faire cela?
Vous devez vous connecter pour publier un commentaire.
Si vous voulez rendre cette index.htm fichier dans le navigateur, puis vous pouvez créer de contrôleur de l'action comme ceci:
ou tout simplement par:
Donc permet de dire que cette action est en Maison contrôleur et des hits http://yoursite.com/Home/GetHtml alors index.htm sera rendu.
EDIT: 2 autres méthodes
Si vous voulez voir du html brut de index.htm dans le navigateur:
Si vous voulez juste pour télécharger le fichier:
Server.MapPath
n'est pas nécessaire. juste essayerreturn File("~/Html/index.htm", "text/html");
File()
?Check this out :
return File("~/Html/index.htm", "text/html");
est la réponse la plus courte ;DJ'ai étendu wahid la réponse de créer HtmlResult
Créer Html Résultat qui s'étend FilePathResult
Créé méthode statique sur le contrôleur de
utilisé comme nous le retourner vue
Espère que cela aide
Pouvez-vous lire le fichier html dans une chaîne de caractères et de retour en action? Il est rendu sous forme de page Html, comme indiqué ci-dessous:
Home/GetHtmlFile?file=Solution\Html\index.htm
Si la destination ou le mécanisme de stockage de fichiers HTML est compliqué alors vous pouvez vous Chemin d'accès virtuel fournisseur
Chemin d'accès virtuel fournisseur MVC échantillon
Je veux mettre mon grain de sel. J'ai trouvé cela plus laconique et il y est déjà :
Approche Alternative si vous l'utilisez .net de base est d'utiliser un FileProvider.
Les fichiers peuvent être dans un dossier ou incorporés au moment de la compilation.
Dans cet exemple, nous allons utiliser les fichiers incorporés.
Ajouter un dossier dans votre projet, disons de l'actif, dans la création d'un fichier myfile.html, ajouter un peu de html de base pour le fichier dire
Clic droit sur le nouveau fichier (en supposant que vous êtes dans visual studio) sélectionnez "propriétés", dans l'écran des propriétés de l' /action de construire, sélectionnez la ressource incorporée. Il va ajouter le fichier dans le fichier csproj.
Clic droit sur votre projet, modifier votre fichier csproj.
Vérifiez que votre groupe de propriétés contient les éléments suivants:
Si non, merci de l'ajouter. Le csproj doit aussi contenir le fichier html nouvellement créé comme:
Pour lire le fichier dans votre contrôleur et de le transmettre au client requiert l'un fournisseur de fichier qui est ajouté au démarrage.cs
Modifier votre démarrage.cs assurez-vous que le HostingEnvironment:
Puis créer un fichier de fournisseur et de le rendre un service qui peut être injecté au moment de l'exécution. Créer comme suit:
Pour desservir le fichier, allez à votre contrôleur, utiliser l'injection de dépendance pour obtenir le FileProvider, créer un nouveau service et servir le fichier. Pour ce faire, commencer avec l'injection de dépendance par l'ajout du fournisseur de votre constructeur.
Puis utilisez le fournisseur de fichier dans votre service
Pour plus d'infos, consultez ASP .Net fichier principal fournisseur de l'échantillon et la documentation de Microsoft ici.