Dans mon dossier Vues "racine", j'ai un _ViewStart avec le code suivant:
@Code
Layout = "~/Views/Shared/_Layout.vbhtml"
End COde
Dans mon dossier Zone/Public/Vues, j'ai une copie de mon _ViewStart à partir du dossier Vues racine.
Mais lorsque j'exécute le code, j'obtiens cette erreur:
Unable to cast object of type 'ASP._ViewStart_vbhtml' to type 'System.Web.WebPages.StartPage'.
Je ne sais pas ce que je fais mal?
Puis-je en utiliser un _ViewStart.vbhtml
pour mes régions aussi?
Comment puis-je utiliser _ViewStart.vbhtml
Dans les zones?
Vous devez copier le ~\Views\Web.config
fichier (ou au moins les éléments de configuration suivants) dans View Web.Config de votre zone:
<configSections>
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="Host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>
</configSections>
<system.web.webPages.razor>
<Host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Routing" />
</namespaces>
</pages>
</system.web.webPages.razor>
Lorsque j'ai rencontré ce problème, j'ai d'abord rencontré cette réponse, mais ce que je voulais vraiment, c'était sur http://stevescodingblog.co.uk/asp-net-mvc-3rc-areas-viewstart/ .
L'essentiel du problème est que _ViewStart. ** html a une portée. Il s'appliquera à toutes les vues qui sont au même niveau ou dans des sous-dossiers en dessous. Par conséquent, si vous le déplacez vers le répertoire de base (par exemple à côté du fichier Global.asax), il s'appliquera à toutes les vues sous ~/Views/* et toutes les vues sous ~/Zones/*/Vues/*.
Comme pour la réponse acceptée, vous devrez toujours copier le <system.web.webPages.razor>
et <sectionGroup name="system.web.webPages.razor"..>
sections. Placez-les dans votre fichier web.config de base (à la racine du projet).
Voici un tutoriel plus complet .
Pour les points bonus, vous pouvez remplacer les paramètres _ViewStart. ** html en créant un nouveau fichier plus proche de la vue en question (par exemple, le fichier ~/Views/_ViewStart.cshtml écrasera ~/_ViewStart.cshtml pour toutes les vues dans le ~/Vues/répertoire).
J'ai trouvé que le déplacement de _ViewStart vers la racine et l'ajout de la section system.web.webPages.razor à la configuration Web racine fonctionnaient, mais j'ai également dû ajouter un certain nombre de lignes similaires à ceci << add namespace = "Ico.Logics.Web .Areas.Admin.Models "/ >> dans la section copiée.