web-dev-qa-db-fra.com

La vue Razor est-elle possible avec ASPX.

Est-il possible de conserver ma page existante .master et de le faire utiliser avec une nouvelle vue ASP.NET MVC 3 RAZOR? J'ai essayé ceci:

@{
   LayoutPage = "~/Views/Shared/Site.master";
 }

Et cela me donne ce message d'erreur:

Le fichier '~/vues/partagé/site.master' n'a pas pu être rendu, car il n'existe pas ou n'est pas une page valide.

38
bkaid

Malheureusement non. Les pages maîtres font partie du moteur ASPX WebForms View, et non du cadre MVC, le RAZOR ne peut donc pas interopérer avec elle.

Une option serait de dupliquer les maîtres, comme vous l'avez mentionné, mais plutôt que de copier tout le code, vous pouvez facturer la page principale dans un tas d'aspex partiels que les maîtres de rasoir et d'ASPX pourraient incorporer. Ensuite, vous pouvez commencer à convertir chaque page et partielle, un seul, à un rasoir et éventuellement se débarrasser du maître ASPX.

34

Il y a en fait un moyen de faire cela. Scott Hansleman a un poteau de blog sur le sujet: http://www.haselman.com/blog/mixingrazorviewsandwebFormsMasterpageswithaspnetmvc3.aspx

C'est un peu pirateux, mais faisable. Je pense que l'approche décrite pourrait être encapsulée et nettoyée encore plus loin pour que vous puissiez construire vos points de vue et vos contrôleurs sans vous soucier de la manière dont les choses sont câblées ensemble.

25
Matt Honeycutt

Je pense que vous devez rechercher _Layout.cshtml dans le dossier partagé ...

Voici la comparaison entre ASPX et le moteur de vue Razor ....

http://weblogs.asp.net/shijuvarghese/archive/2010/07/29/aspx-and-razor-view-Engines-in-asp-net-mvc-3-preview-1.aspx

c'est aussi un poste d'interessation sur les Masterpages imbriqués avec un rasoir ...

http://weblogs.asp.net/fredriknormen/archive/2010/08/01/asp-net-mvc-3-0-preview-1-razor-and-nemettes-master-pages.aspx

Ht

8
server info

Prise en charge des contrôles utilisateur .NET en MVC

MVC ne supporte pas officiellement les contrôles utilisateur .NET, mais vous pouvez récupérer le HTML produit par eux. Le code suivant récupère le code HTML produit à partir d'une page composée de dizaines de fichiers ASCX.

  • Créez un ASP page contenant vos contrôles utilisateur .NET sur votre site MVC.
  • Obtenez la chaîne HTML produite par vos contrôles utilisateur.
  • Utilisez la chaîne HTML dans votre page de mise en page MVC.

Exemple de code:

try{

    using (WebClient client = new WebClient())  
    {

        client.Headers[HttpRequestHeader.UserAgent] = "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13";

        myHTML = client.DownloadString("http//www.mysite.com/header.aspx");
    }

} catch ( WebException exception )

{

    using(var reader = new StreamReader(exception.Response.GetResponseStream())){

        Response.Write(reader.ReadToEnd());

    }

}

@Html.Raw(myHTML ); //OR Response.Write(myHTML);

@RenderBody(); 
2
Jack Nichols

Devant juste passer ce processus moi-même, j'ai trouvé cela - cette méthode de Matt Hawley a travaillé un régal.

Cette approche fonctionne en créant une page ASPX standard qui utilise votre page maître requise. Vous pouvez ensuite ajouter des espaces réservés de contenu selon les besoins. Vous appelez ensuite Renderpartial avec le nom de la vue à utiliser. La réponse de votre contrôleur est ensuite transmise à la vue réelle que vous souhaitez rendre.

Il y a un peu plus de plomberie nécessaire pour faire ce travail et vous devez appeler une méthode d'extension pour rendre votre vue dans le contrôleur, mais une fois que vous êtes configuré, cela fonctionne très bien.

1
Derek Ekins

En rasoir, vous pouvez obtenir les mêmes fonctionnalités en utilisant des pages de mise en page.

pages Mise en page/Master en utilisant Razor

0
mahesh