2017-10-19 18 views
0

J'ai une application Web entière créée à l'aide d'ASP.NET MVC et une page _ViewStart.cshtml qui spécifie une mise en page.Page HTML statique dans ASP.NET MVC qui n'utilise pas la mise en page

Cela fonctionne très bien pour l'ensemble de mon site. Cependant, j'ai un seul prototype de page HTML statique que j'ai juste besoin de jeter dans un répertoire.

J'ai copié le code HTML dans un fichier CSHTML et je l'ai placé devant un contrôleur. Le problème est que quand je vais à cette page, il utilise la mise en page.

Comment puis-je le configurer afin que je puisse simplement diffuser cette page en tant que contenu statique et autonome sans la mise en page de _ViewStart?

Répondre

4

Par défaut, toutes les vues utiliseront la présentation de ~/Views/Shared comme indiqué dans le fichier _Viewstart.cshtml. Chaque fois qu'une vue est exécutée, le code à l'intérieur du _Viewstart.cshtml sera exécuté ce qui définit la disposition de la vue.

Si vous ne voulez pas exécuter/inclure la mise en page pour une vue spécifique, vous pouvez définir explicitement la mise en forme comme null dans une vue. Ajoutez le code ci-dessous à la vue.

@{ 
    Layout = null; 
} 

Gardez à l'esprit que, même si elle est statique html dans votre fichier cshtml, l'utilisateur ne sera pas/ne devrait pas accéder directement à ce point de vue (comme une page html normale/htm). Il doit être routé via une méthode d'action qui renvoie cette vue cshtml.

Une autre option consiste à utiliser la méthode PartialView au lieu de la méthode View. Lorsque vous utilisez la méthode PartialView pour afficher une vue, la structure ne s'exécute pas _ViewStart.cshtml, d'où le même résultat.

public ActionResult About() 
{ 
    return PartialView(); 
} 

PartialView est vraiment pratique lorsque vous voulez rendre le balisage pour les parties de votre page (Ex: contenu pour une boîte de dialogue modale etc)

0

Dans votre vue statique la page set layout = null. Comme: @{Layout = null;}