158 votes

Ce qui est le ' cycle de vie page ' d’une page ASP.NET MVC, par rapport aux formulaires Web ASP.NET ?

Qu'est-ce que la page "cycle de vie" d'un ASP.NET MVC page, par rapport à ASP.NET WebForms?

Je suis tryin pour mieux comprendre cette "simple" question afin de déterminer si oui ou non les pages existantes, j'ai dans un (très) simple site peut être facilement converti à partir ASP.NET WebForms.

Soit une "conversion" de la procédure ci-dessous, ou une variante du cycle de vie serait ce que je suis à la recherche pour.

Ce que je suis en train de faire:

(oui, je sais que quelqu'un capable de répondre à ma question sait déjà tout cela, je suis juste tryin pour obtenir une comparaison du 'cycle de vie' alors j'ai pensé que je commencerais en remplissant ce que nous avons déjà tous le savoir)

Le rendu de la page:

  • J'ai une page principale qui contient mon modèle de base
  • J'ai des pages de contenu qui me donnent nommé régions de la page dans laquelle j'ai mis le contenu.
  • Dans un gestionnaire d'événement pour chaque page de contenu de charger des données à partir de la base de données (principalement en lecture seule).
  • - Je lier ces données à ASP.NET les contrôles représentant des grilles, des listes déroulantes ou des répéteurs. Ces données toutes les "vies" à l'intérieur du code HTML généré. Certains de il est dans l'état d'affichage (mais je ne vais pas entrer dans trop!!!)
  • J'définir les propriétés ou lier des données à certains éléments, comme l'Image ou de contrôles de zone de texte sur la page.
  • La page est envoyée au client rendus en tant que non-réutilisables HTML.
  • J'essaie d'éviter d'utiliser ViewState autre que ce que la page a besoin d'un minimum.

Côté Client (ne pas l'utiliser ASP.NET AJAX):

  • Je peut utiliser JQuery et quelques vilains tours pour trouver des contrôles sur la page et d'effectuer des opérations sur eux.
  • Si l'utilisateur sélectionne à partir d'une liste déroulante -- une publication est produite qui provoque un C# événement dans mon code-behind. Cet événement peut aller à la base de données, mais quoi que l'on fasse une toute nouvelle page HTML générée finit par se faire renvoyer au client.
  • Je peux utiliser la Page.Session pour stocker des paires clé-valeur-je besoin pour la réutiliser plus tard

Donc, avec MVC comment fonctionne ce "cycle de vie" le changement?

39voto

Mike Glenn Points 1474

Je vais tenter de commenter chacun des points de balle que vous avez mentionné:

Votre maître de pages existent encore dans MVC et sont utilisés pour fournir une mise en page cohérente pour le site. pas beaucoup de nouvelles.

Vos pages de contenu deviendra vues dans le MVC monde. Ils fournissent toujours les mêmes zones de contenu de vos pages maîtres.

Le eventhandling de formulaires web ne doit pas être utilisé dans MVC, à la place de votre Contrôleur de classes et leurs méthodes d'action va gérer le chargement de vos données dans un "modèle" qui est passée à la vue.

Bien que webform style de la liaison de données est possible dans MVC, je trouve que ce n'est pas la solution optimale. Mieux de placer vos données dans un modèle de classe et vivement le type de votre vue, de sorte que vous avez un accès direct à ce modèle. Ensuite, il s'agit tout simplement d'une question de l'utilisation de l' <%= ViewData.Model.SomeProperty %> de la syntaxe pour accéder à vos données et de les afficher dans les endroits désirés. Comme pour le viewstate, ma recommandation est d'oublier qu'il existe même.

Rappelez-vous que l'un des avantages de l'utilisation de MVC est que vous avez le contrôle sur le code HTML que vous envoyer au client. Embrasser le pouvoir et tentent de trouver des solutions qui vous permettent de maintenir ce contrôle. Webform contrôles tentative de cacher le code html de vous et en tant que tel, de le rendre plus difficile à personnaliser le code html lorsque vous en avez besoin.

Je vous recommande fortement de JQuery ou de l'un de l'autre de la même manière puissante les bibliothèques javascript. Mais apprendre à les utiliser pour accéder au DOM HTML directement et éviter l'id d'amputation des questions de webform contrôles.

Vous pouvez utiliser jquery pour accrocher dans la liste déroulante de sélection sur le côté client et soumettre standard ou ajax style de demandes. Ceux qui demande le retour de nouvelles pages, des redirections, des fragments de html ou même des données JSON qui peut être utilisé pour mettre à jour la page existante.

L'asp.net Session peut être utilisé comme nécessaire.

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