38 votes

La vue Razor avec la page ASPX .Master est-elle possible ?

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

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

Et ça me donne ce message d'erreur :

Le fichier '~/Views/Shared/Site.master' n'a pas pu être rendu, car il n'existe pas ou n'est pas une page valide.

34voto

Andrew Nurse Points 4553

Malheureusement non. Les pages maîtres font partie du moteur de visualisation ASPX WebForms, et non du cadre MVC, de sorte que Razor ne peut pas interagir avec lui.

Une option serait de dupliquer les maîtres, comme vous l'avez mentionné, mais plutôt que de copier tout le code, vous pourriez factoriser la page maître en un ensemble de partiels ASPX que les maîtres Razor et ASPX pourraient intégrer. Ensuite, vous pouvez commencer à convertir chaque page et chaque partie, une par une, en Razor et finalement vous débarrasser du maître ASPX.

25voto

Matt Honeycutt Points 557

Il existe en fait un moyen de le faire. Scott Hansleman a publié un article de blog sur le sujet : http://www.hanselman.com/blog/MixingRazorViewsAndWebFormsMasterPagesWithASPNETMVC3.aspx

C'est un peu bricolé, mais faisable. Je pense que l'approche décrite pourrait être encapsulée et nettoyée encore plus pour que vous puissiez construire vos vues et contrôleurs sans vous soucier de la façon dont les choses sont câblées ensemble.

8voto

server info Points 752

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

Voici la comparaison entre aspx et razor view engine....

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

il s'agit également d'un article intéressant sur les pages maîtres imbriquées avec razor...

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

HTH

2voto

Jack Nichols Points 21

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

MVC ne prend pas officiellement en charge les contrôles d'utilisateur .Net, mais vous pouvez récupérer le code HTML qu'ils produisent. Le code suivant récupère le HTML produit par une page composée de dizaines de fichiers ASCX.

  • Créez une page ASP qui contient vos contrôles d'utilisateur .Net dans votre site MVC.
  • Obtenez la chaîne HTML produite par vos contrôles utilisateur.
  • Utilisez la chaîne HTML dans votre page MVC Layout.

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();

-1voto

mahesh Points 166

Dans Razor, vous pouvez obtenir la même fonctionnalité en utilisant des pages de mise en page.

Mise en page/maîtrise des pages avec Razor

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X