web-dev-qa-db-fra.com

Comment inclure un fichier html brut dans la vue du rasoir

J'ai du code et je voudrais faire une modularisation supplémentaire, donc je voudrais avoir mon composant Calendar dans son propre html (ce n'est pas un html complet mais un dont les balises externes sont <div>)

J'ai essayé de faire des choses comme

            @RenderSection("~/Views/Home/_TSCalendar.html")

Mais il ne semble pas l'aimer. En outre, je veux router vers mon fichier cshtml externe et non pas _ TSCalendar.html vers lequel je pointe.

Comment insérer un fichier html brut dans ma vue .cshtml?

9
ditoslav

Pourquoi n'utilisez-vous pas partialview?

Quoi qu'il en soit, ce que vous essayez peut être atteint par ceci -

@Html.Raw(File.ReadAllText(Server.MapPath("~/Views/Home/_TSCalendar.html")))

Vous pouvez passer n'importe quel html sous forme de chaîne à @ Html.Raw

Mettre à jour

Créez simplement une nouvelle vue partielle dans votre dossier partagé (si vous souhaitez l'utiliser dans l'application) et ajoutez le code suivant dans vos vues où vous voulez utiliser le composant de calendrier. Vous n'avez pas besoin de naviguer explicitement vers votre partiel pour y accéder.

@Html.Partial("~/Views/Shared/_TSCalendar")

Vous pouvez même transmettre des valeurs telles que selectedDate et utiliser cette valeur dans votre partiel _TSCalendar.

28
CoOl

Comme CoOl l'a dit - si vous utilisez MVC, je recommande fortement d'utiliser PartialViews - dans votre cas, vous pouvez simplement avoir un simple morceau de HTML, mais si vous commencez à les utiliser maintenant, vous réaliserez à quel point il est puissant de pouvoir appeler HTML à votre page, et même passer un modèle/sous-ensemble d'un modèle dans la vue nouvellement générée.

Si vous allez ajouter une nouvelle vue dans VS, vous verrez une case à cocher pour "Créer comme partiel" ou quelque chose dans ce sens. Vous pouvez littéralement simplement ajouter du HTML dans les balises comme vous l'avez dit ci-dessus et appeler

 @Html.Partial("_PageToLoad")
2
Krishan Patel