Le plus grand avantage de l'utilisation d'ASP.Net MVC par rapport aux formulaires Web

164

Quels sont certains des avantages de l'utilisation de l'un par rapport à l'autre?

user18931
la source

Réponses:

165

Les principaux avantages d' ASP.net MVC sont:

  1. Permet le contrôle total sur le HTML rendu.

  2. Fournit une séparation nette des problèmes (SoC).

  3. Active le développement piloté par les tests (TDD) .

  4. Intégration facile avec les frameworks JavaScript.

  5. Suite à la conception de la nature apatride du Web.

  6. URL RESTful qui permettent le référencement.

  7. Aucun événement ViewState et PostBack

Les principaux avantages de ASP.net Web Form sont:

  1. Il fournit le développement RAD

  2. Modèle de développement facile pour les développeurs issus du développement winform.

cvs
la source
32
En ce qui concerne le SoC, les gens peuvent le gâcher comme ils le faisaient sur les formulaires Web, en écrivant des contrôleurs «gros» avec beaucoup de logique métier ou même du code d'accès aux données. Donc, je dirais que SoC est quelque chose qui doit être fourni par le codeur, le fw ne peut pas aider.
rodbv
7
@ rodbv: Très vrai, mais MVC vous pousse en quelque sorte dans la bonne direction, ou du moins ne vous fait pas sauter à travers des cerceaux pour le faire. Alors peut-être que ce point devrait lire quelque chose comme `` rend le SoC plus facile à mettre en œuvre ''
Erik van Brakel
4
Comment «activer le développement piloté par les tests» par rapport à toute autre méthode? Je ne comprends pas non plus comment il autorise les URL RESTful lorsque la méthode HttpContext.RewritePath (String) existe depuis .NET 2.0?
Mark Broadhurst
2
Bien que ces points soient principalement précis pour le côté MVC, beaucoup d'entre eux sont maintenant intégrés dans WebForms.
rtpHarry
Lien vers la source de cette réponse avec plus de détails: weblogs.asp.net/shijuvarghese/archive/2008/07/09/…
DK.
91

ASP.NET Web Forms et MVC sont deux frameworks Web développés par Microsoft - ce sont tous deux de bons choix. Aucun des frameworks Web ne doit être remplacé par l'autre et il n'est pas prévu de les «fusionner» en un seul framework. Le support et le développement continus sont effectués en parallèle par Microsoft et aucun des deux ne «disparaîtra».

Chacun de ces frameworks Web offre des avantages / inconvénients - dont certains doivent être pris en compte lors du développement d'une application Web. Une application Web peut être développée à l'aide de l'une ou l'autre des technologies - cela peut faciliter le développement d'une application particulière en sélectionnant une technologie par rapport à l'autre et vice versa.

Formulaires Web ASP.NET:

  • Le développement prend en charge l'état • Donne l'illusion qu'une application Web est consciente de ce que l'utilisateur a fait, comme les applications Windows. Ie Rend la fonctionnalité «assistant» un peu plus facile à implémenter. Les formulaires Web font un excellent travail pour cacher une grande partie de cette complexité au développeur.
  • Développement rapide d'applications (RAD) • La capacité de «se lancer» et de commencer à fournir des formulaires Web. Ceci est contesté par une partie de la communauté MVC, mais poussé par Microsoft. En fin de compte, cela dépend du niveau d'expertise du développeur et de ce avec quoi il est à l'aise. Le modèle de formulaires Web a probablement moins de courbe d'apprentissage pour les développeurs moins expérimentés.
  • Boîte à outils de contrôle plus grande • ASP.NET Web Forms offre une boîte à outils (contrôles Web) beaucoup plus grande et plus robuste, tandis que MVC propose un ensemble de contrôles plus primitif reposant davantage sur des contrôles côté client riches via jQuery (Javascript).
  • Mature • Il existe depuis 2002 et il existe une abondance d'informations concernant les questions, les problèmes, etc. Offre plus de contrôle par des tiers - il faut tenir compte de vos boîtes à outils existantes.

ASP.NET MVC:

  • Séparation des problèmes (SoC) • D'un point de vue technique, l'organisation du code au sein de MVC est très propre, organisée et granulaire, ce qui facilite (espérons-le) pour une application Web une évolution en termes de fonctionnalités. Favorise une excellente conception du point de vue du développement.
  • Intégration plus facile avec les outils côté client (outils d'interface utilisateur riches) • Plus que jamais, les applications Web deviennent de plus en plus aussi riches que les applications que vous voyez sur vos postes de travail. Avec MVC, il vous donne la possibilité d'intégrer de telles boîtes à outils (telles que jQuery) avec plus de facilité et de transparence que dans les formulaires Web.
  • Optimisation pour les moteurs de recherche (SEO) Convivial / sans état • Les URL sont plus conviviales pour les moteurs de recherche (c.-à-d. Mywebapplication.com/users/ 1 - récupère l'utilisateur avec un ID de 1 vs mywebapplication / users / getuser.aspx (identifiant passé en session)). De même, puisque MVC est sans état, cela supprime le casse-tête des utilisateurs qui génèrent plusieurs navigateurs Web à partir de la même fenêtre (collisions de session). Dans le même esprit, MVC adhère au protocole Web sans état plutôt que de se «battre» contre lui.
  • Fonctionne bien avec les développeurs qui ont besoin d'un niveau de contrôle élevé. • De nombreux contrôles des formulaires Web ASP.NET génèrent automatiquement une grande partie du code HTML brut que vous voyez lorsqu'une page est rendue. Cela peut causer des maux de tête aux développeurs. Avec MVC, il se prête mieux à avoir un contrôle complet sur ce qui est rendu et il n'y a pas de surprises. Ce qui est encore plus important, c'est que les formulaires HTML sont généralement beaucoup plus petits que les formulaires Web, ce qui peut équivaloir à une amélioration des performances - quelque chose à considérer sérieusement.
  • Développement piloté par les tests (TDD) • Avec MVC, vous pouvez créer plus facilement des tests pour le côté Web des objets. Une couche supplémentaire de tests fournira une autre couche de défense contre un comportement inattendu.

L'authentification, l'autorisation, la configuration, la compilation et le déploiement sont toutes des fonctionnalités partagées entre les deux frameworks Web.

JC
la source
27
"Avec MVC, vous avez un contrôle complet sur ce qui est rendu" - vous pouvez également avoir un contrôle complet avec WebForms si vous utilisez des littéraux au lieu d'étiquettes, des espaces réservés au lieu de panneaux, des répéteurs au lieu de datagrids, etc. Trop de développeurs lisent des déclarations comme celle-ci et crois que c'est vrai. Downvote ..
masty
3
@masty - Je ne sais pas si je voterais personnellement contre, mais je suis d'accord avec le reste de ce que vous avez dit.
Peter
4
@masty - Merci d'avoir sauvé le monde StackOverflow en pinaillant et en demandant que cette question soit rejetée. J'ai modifié ma réponse juste pour vous - j'espère donc pouvoir récupérer votre vote avec tous les autres à qui vous avez demandé de voter contre. Merci!
JC
6
@masty Je suis partiellement d'accord, mais lorsque vous utilisez des littéraux, des espaces réservés et des répéteurs, vous déplacez de plus en plus de html vers le codebehind. Ce qui peut également semer la confusion chez les concepteurs lisant le .aspx et chez les codeurs lisant le .aspx.cs. Alors oui, c'est possible, mais oui, cela va également à l'encontre de l'objectif des WebForms ASP.Net. Je dirais que ControlAdapters est une solution plus propre dans ce cas. Au lieu de remplacer les contrôles, vous remplacez la façon dont ils sont rendus.
Aidiakapi
2
La déclaration «Avec MVC, vous avez un contrôle total sur ce qui est rendu» est confuse. Je pense que la meilleure déclaration serait: "Le framework MVC fait moins de rendu et ce qui est rendu est plus léger. Vous avez plus de contrôle sur le HTML / CSS spécifique qui est rendu, mais vous devez faire le travail pour obtenir ce contrôle."
kingdango
17

Quiconque est assez vieux pour se souvenir de l'ASP classique se souviendra du cauchemar d'ouvrir une page avec du code mélangé avec du html et du javascript - même la plus petite page était difficile de comprendre ce qu'elle faisait. Je peux me tromper, et j'espère que je le suis, mais MVC a l'air de revenir à ces mauvais vieux jours.

Lorsque ASP.Net est arrivé, il a été salué comme le sauveur, séparant le code du contenu et nous permettant de demander aux concepteurs Web de créer le html et aux codeurs de travailler sur le code derrière. Si nous ne voulions pas utiliser ViewState, nous l'avons désactivé. Si nous ne voulions pas utiliser de code derrière pour une raison quelconque, nous pourrions placer notre code dans le html, tout comme ASP classique. Si nous ne voulions pas utiliser PostBack, nous avons redirigé vers une autre page pour traitement. Si nous ne voulions pas utiliser les contrôles ASP.Net, nous avons utilisé des contrôles html standard. Nous pourrions même interroger l'objet Response si nous ne voulions pas utiliser ASP.Net runat = "server" sur nos contrôles.

Maintenant, quelqu'un dans sa grande sagesse (probablement quelqu'un qui n'a jamais programmé l'ASP classique) a décidé qu'il était temps de revenir à l'époque du mélange de code et de contenu et de l'appeler «séparation des préoccupations». Bien sûr, vous pouvez créer un code HTML plus propre, mais vous pouvez le faire avec un ASP classique. Dire "vous ne programmez pas correctement si vous avez trop de code dans votre vue" revient à dire "si vous avez écrit du code bien structuré et commenté dans ASP classique, il est bien plus propre et meilleur que ASP.NET"

Si je voulais revenir au mélange de code avec du contenu, je voudrais développer en utilisant PHP qui a un environnement beaucoup plus mature pour ce type de développement. S'il y a tant de problèmes avec ASP.NET, pourquoi ne pas résoudre ces problèmes?

Enfin, le nouveau moteur Razor signifie qu'il est encore plus difficile de faire la distinction entre html et code. Au moins, nous pourrions rechercher des balises d'ouverture et de fermeture, c'est-à-dire <% et%> dans ASP, mais maintenant la seule indication sera le symbole @.

Il est peut-être temps de passer à PHP et d'attendre encore 10 ans que quelqu'un sépare à nouveau le code du contenu.

Kevin Farrow
la source
7
+1 Spot sur. Ma première réaction à MVC a été que je refais du Classic ASP; seulement en C # cette fois au lieu de VBScript.
DancesWithBamboo
3
Je suis étonné de voir pourquoi cette réponse a obtenu autant de votes positifs. Premièrement, ASP.NET MVC a la séparation de MVC intégrée. Bien sûr, il est possible pour vous de le faire dans ASP. Deuxièmement, ASP.NET MVC est bien plus qu'un ASP classique. Il offre un contrôle fin sur HTML combiné à la puissance de .NET accompagné de nombreux assistants utiles. Troisièmement, @ est une notation fine, tout comme <%%>. Tout éditeur décent pour vos vues Razor prendra en charge la @ -notation. Enfin, PHP mature? me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-design ASP.NET MVC est une excellente plate-forme. Accordez-lui plus d'attention.
JP ten Berge
Vous plaisantez j'espère? J'ai utilisé PHP avec sa notation "<? ...?>" Et je l'ai trouvé complètement verbeux. Je ne vois pas comment le symbole "@" est plus difficile à reconnaître que les balises "<% ...%>". De plus, vous utilisez rarement le symbole «@» dans les modèles HTML.
Exégèse du
Mes yeux peuvent vraiment mieux se reposer sur une page de rasoir que sur l'enfer des symboles "<%%>". La lecture d'une page .aspx me donne des maux de tête. Je préfère aussi voir ce qui est rendu. Un bloc @foreach (..) {<tr> ... </tr>} me met plus à l'aise qu'un <abc: MyViewControl ID = "..." runat = "server" DatasourceID = ".... "/>. Je fais beaucoup de manipulations côté client et j'ai besoin de savoir exactement ce qui va être rendu où, et avec quels id, style et classes. Je préfère le faire moi-même plutôt que de laisser un contrôle le faire à la volée. Surtout lorsque certains contrôles sont rendus différemment en fonction de leurs paramètres.
Thanasis Ioannidis
Je suis surpris que cela ait des votes positifs, c'est une incompréhension totale du cadre MVC. Si vous vous retrouvez à mélanger du code avec du contenu dans MVC, vous le faites mal. Vos vues ont du contenu, vos contrôleurs (et les classes qu'ils utilisent) ont du code. C'est l'un des principes fondamentaux de MVC.
Josh Noe du
14

Si vous travaillez avec d'autres développeurs, tels que PHP ou JSP (et je devine des rails) - vous allez avoir beaucoup plus de facilité à convertir ou à collaborer sur des pages parce que vous n'aurez pas tous ces ASP.NET `` méchants '' événements et contrôles partout.

Simon_Weaver
la source
"temps beaucoup plus facile" en utilisant lequel?
cregox
5
@cawas - beaucoup plus facile avec MVC. il n'y a aucun événement dans ASP.NET MVC. fondamentalement, vous avez affaire à du HTML et à du css standard et pas à beaucoup d'événements et de contrôles que les développeurs PHP / JSP auraient besoin d'apprendre
Simon_Weaver
ASP.NET est la base des WebForms et MVC. Les gens ont tendance à confondre WebForms avec ASP.NET. Il n'y a pas de "MVC vs ASP.NET". Il existe "ASP.NET MVS" vs "ASP.NET WebForms". Et en fait, ils ne se battent pas. Ce ne sont que des façons différentes, avec différents avantages et inconvénients, de créer un site Web
Thanasis Ioannidis
13

Le problème avec MVC est que même pour les "experts", cela prend beaucoup de temps précieux et demande beaucoup d'efforts. Les entreprises sont guidées par le principe de base «Solution rapide qui fonctionne», quelle que soit la technologie sous-jacente. WebForms est une technologie RAD qui permet d'économiser du temps et de l'argent. Tout ce qui demande plus de temps n'est pas acceptable par les entreprises.

Merc
la source
1
Les +1 pour les entreprises sont motivés par la chose de base "Solution rapide qui fonctionne"
Dragos Durlut
1
Le problème, c'est quand certaines solutions rapides ne fonctionnent tout simplement pas parce qu'elles avaient l'intention d'être rapides en premier lieu. Expérience récente: une page de formulaires Web rapide pour effectuer une création-édition-mise à jour de base. C'était censé être "plus rapide" que la page équiveland d'infopath qui était un peu lente. En fait, la nouvelle solution avait presque les mêmes performances avec la page infopath, sauf dans IE7 où elle était extrêmement lente au point d'être inutile. 5 secondes pour ouvrir la page, et 5 secondes à chaque fois que l'on cliquait sur une combobox ... Tout ça, juste parce que ça devait être rapide. Aucune pensée, aucune planification.
Thanasis Ioannidis
1
Après cela, nous avons fini par supprimer tous les contrôles pour se débarrasser de leurs scripts côté client lourds et inutiles, et avons fini par rendre des contrôles html manuels avec des données et des événements bootstrapés, et une combinaison de jQuery et BackBone.js. Il s'agit en fait d'une approche MVC hébergée dans une page de formulaires Web. Bien sûr, avec une bonne planification et une bonne planification, WebForms et MVC peuvent très bien fonctionner, mais WebForms vous incite à simplement lancer des contrôles dans votre page juste pour voir quelque chose bouger sur votre écran, puis vous passez plus de temps à le peaufiner, sinon à le supprimer. du tout.
Thanasis Ioannidis
11
  1. AJAX correct, par exemple JSONResults pas de non-sens de publication de page partielle.
  2. pas de vue +1
  3. Pas de changement de nom des ID HTML.
  4. HTML propre = pas de ballonnement et avoir une bonne chance de rendre des pages XHTML ou conformes aux normes.
  5. Plus de javascript AXD généré.
Francis Shanahan
la source
9

Le plus grand avantage pour moi serait la séparation nette entre vos couches Modèle, Vue et Contrôleur. Cela aide à promouvoir une bonne conception dès le départ.

Matthew Ruston
la source
4
Je conviens que c'est un argument de vente majeur si vous n'avez jamais travaillé avec ce type de modèle auparavant, mais vous pouvez implémenter votre modèle MVC ou MVP dans WebForms. Félicitations pour amener les gens à passer à un modèle plutôt que de monolither un formulaire Web avec des ensembles de données, mais ils ne sont pas le type de personnes que j'embauche généralement.
Mark Broadhurst le
9

Je n'ai vu AUCUN avantage de MVC sur ASP.Net. Il y a 10 ans, Microsoft a proposé UIP (User Interface Process) comme réponse à MVC. C'était un flop. Nous avons fait un grand projet (4 développeurs, 2 designers, 1 testeur) avec UIP à l'époque et c'était un cauchemar.

Ne vous contentez pas de prendre le train en marche pour le plaisir de Hype. Tous les avantages énumérés ci-dessus sont déjà disponibles dans Asp.Net (avec des modifications plus intéressantes [ Nouvelles fonctionnalités dans Asp.Net 4 ] dans Asp.Net 4).

Si votre équipe de développement ou une seule famille de développeurs avec Asp.Net, respectez-la et fabriquez rapidement de beaux produits pour satisfaire vos clients (qui payent vos heures de travail). MVC va consommer votre temps précieux et produire les mêmes résultats qu'Asp.Net :-)

Krish Van Colombo
la source
1
La désactivation de viewstate par défaut tout en l'activant sur le contrôle occasionnel qui en a réellement besoin était un grand pas en avant dans ASP.NET 4.
PeteT
WebForms et MVC reposent sur ASP.NET.
Thanasis Ioannidis
8

Francis Shanahan,

  1. Pourquoi appelez-vous la publication partielle comme «absurde»? C'est la fonctionnalité principale d'Ajax et a été très bien utilisée dans le framework Atlas et de merveilleux contrôles tiers comme Telerik

  2. Je suis d'accord avec votre point de vue concernant l'état de la vue. Mais si les développeurs prennent soin de désactiver viewstate, cela peut réduire considérablement la taille du HTML qui est rendu, ainsi la page devient plus légère.

  3. Seuls les contrôles HTML Server sont renommés dans le modèle de formulaire Web ASP.NET et non les contrôles html purs. Quoi qu'il en soit, pourquoi êtes-vous si inquiet si le changement de nom est fait? Je sais que vous voulez gérer de nombreux événements javascript côté client, mais si vous concevez vos pages Web intelligemment, vous pouvez certainement obtenir tous les identifiants que vous voulez

  4. Même les formulaires Web ASP.NET répondent aux normes XHTML et je ne vois aucun gonflement. Ce n'est pas une justification de la raison pour laquelle nous avons besoin d'un modèle MVC

  5. Encore une fois, pourquoi êtes-vous dérangé par AXD Javascript? Pourquoi ça te fait mal? Ce n'est pas encore une justification valable

Jusqu'à présent, je suis fan de développement d'applications à l'aide de formulaires Web ASP.NET classiques. Par exemple: si vous souhaitez lier une liste déroulante ou une grille, vous avez besoin d'un maximum de 30 minutes et pas plus de 20 lignes de code (minimum bien sûr). Mais dans le cas de MVC, parlez aux développeurs de la douleur.

Le plus gros inconvénient de MVC est que nous retournons à l'époque de l'ASP. Rappelez-vous le code spaghetti de mélanger le code serveur et HTML ??? Oh mon dieu, essayez de lire une page aspx MVC mélangée avec du javascript, du HTML, du JQuery, du CSS, des balises Server et que sais-je encore .... N'importe quel organisme peut répondre à cette question?

Ganesh
la source
6
Les publications partielles sont un kludge laid
UpTheCreek
3
Si vous avez beaucoup de code dans vos vues, vous faites quelque chose de mal. Le code dans les vues ne doit concerner que la mise en page.
UpTheCreek
1
La seule raison pour laquelle vous verriez une page avec javascript mélangé avec css et html est si vous regardiez le travail d'un développeur paresseux qui ne pouvait pas se soucier de séparer les styles et les scripts. Cela peut se produire dans les formulaires Web ET mvc. Je suis d'accord que les balises de script sont laides, mais avec MVC3, elles ne sont certainement plus, et au moins vous pouvez voir ce qui se passe sans regarder dans un code derrière un fichier et trouver le point où un contrôle est lié aux données ...
jcvandan
De plus, si vous créez du code spaghetti à l'aide de MVC, vous ne respectez pas le principe de séparation des préoccupations et n'utilisez pas un beau modèle architectural
jcvandan
1
En utilisant les deux, je peux dire que rien n'est plus compliqué que les WebForms. MVC est propre, à l'exception des balises du serveur, mais à part cela, tout désordre est la faute de mauvais programmeurs. MVC est conçu par cœur pour séparer la logique de la conception. Vous mentionnez également Telerik. Telerik pour ASP.Net AJAX provoque un tel code désordonné. Sans parler de la vitesse, (remuer) le tri d'une grille telerik prend: 500ms pour 4 pages dans ASP.Net WebForms, prend 200ms pour 84 pages dans MVC. (Testé en utilisant leur démo et Firebug pour Chrome.) Quand il s'agit de performances et de séparation, MVC gagne définitivement.
Aidiakapi
6

Les formulaires Web bénéficient également d'une plus grande maturité et du soutien de fournisseurs de contrôle tiers tels que Telerik.

Timbo
la source
2
Ne pas dire que cela ne peut pas être fait avec MVC, car je suis sûr que c'est le cas, mais si vous voulez associer une application intranet ou extranet rapide et sale avec beaucoup de bling Telerik et WebForms, c'est difficile à battre. Flamme loin, c'est la vérité honnête.
infocyde
Telerik a aussi des contrôles MVC (moins, et avec moins d'options, mais néanmoins ils l'ont), et ils sont BEAUCOUP plus rapides que leurs variantes WebForm.
Aidiakapi
5

Dans les formulaires Web, vous pouvez également rendre le HTML presque entier à la main, à l'exception de quelques balises telles que viewstate, eventvalidation et autres, qui peuvent être supprimées avec PageAdapters. Personne ne vous oblige à utiliser GridView ou un autre contrôle côté serveur qui a une mauvaise sortie de rendu HTML.

Je dirais que le plus gros avantage de MVC est la VITESSE!

Vient ensuite la séparation forcée des préoccupations. Mais cela ne vous interdit pas de mettre toute la logique BL et DAL dans Controller / Action! C'est juste une séparation de vue, qui peut également être effectuée dans les formulaires Web (modèle MVP par exemple). Beaucoup de choses que les gens mentionnent pour mvc peuvent être faites dans les formulaires Web, mais avec un effort supplémentaire.
La principale différence est que la demande vient au contrôleur, pas à la vue, et ces deux couches sont séparées, non connectées via une classe partielle comme dans les formulaires Web (aspx + code derrière)

Hrvoje Hudo
la source
Voulez-vous dire vitesse de développement ou vitesse d'exécution?
Jules
1
Surtout lors de l'utilisation de telerik avec MVC. D'après leurs démos, le tri d'une grille prend: 500 ms pour 4 pages (WebForms), 200 ms pour 84 pages (MVC). Ce que pour moi une préférence de MVC (même si nous utilisons WebForms dans mon entreprise, je pense que nous envisageons de faire le changement), c'est que c'est plus propre, vous avez votre point de vue, où vous adaptez votre sortie, votre modèle, où vous vous trompez les données: P, et vos contrôleurs qui ont tout rassemblé
Aidiakapi
4

Mes 2 cents:

  • Les formulaires ASP.net sont parfaits pour le développement rapide d'applications et pour ajouter rapidement de la valeur commerciale. Je l'utilise toujours pour la plupart des applications intranet.
  • MVC est idéal pour l'optimisation des moteurs de recherche car vous contrôlez l'URL et le HTML dans une plus grande mesure
  • MVC produit généralement une page beaucoup plus légère - pas de vue et HTML plus propre = temps de chargement rapides
  • MVC met facilement en cache des parties de la page. -MVC est amusant à écrire: - avis personnel ;-)
Nicolas
la source
3

MVC vous permet d'avoir plus d'un formulaire sur une page, une petite fonctionnalité que je connais mais c'est pratique!

Je pense également que le modèle MVC facilite la maintenance du code, en particulier. lorsque vous le revisitez après quelques mois.

Amande
la source
2
ASP.NET Webforms vous permet d'avoir autant de formulaires sur une page que vous le souhaitez. La limitation est qu'un seul peut avoir l'attribut "runat =" server ".
Andrei Rînea
1
@AndreiRinea Je pense qu'il voulait dire que: P, il n'y a pas beaucoup d'utilité dans une runat="server"balise non form quand vous voulez toujours utiliser des formulaires Web, et comme vous ne pouvez / ne devriez pas imbriquer les formulaires, je pense que c'est assez évident ce qu'il voulait dire :)
Aidiakapi
2

Contrôleur MVC:

    [HttpGet]
    public ActionResult DetailList(ImportDetailSearchModel model)
    {
        Data.ImportDataAccess ida = new Data.ImportDataAccess();
        List<Data.ImportDetailData> data = ida.GetImportDetails(model.FileId, model.FailuresOnly);

        return PartialView("ImportSummaryDetailPartial", data);
    }

Vue MVC:

<table class="sortable">
<thead>
    <tr><th>Unique Id</th><th class="left">Error Type</th><th class="left">Field</th><th class="left">Message</th><th class="left">State</th></tr>
</thead>
<tbody>
    @foreach (Data.ImportDetailData detail in Model)
    {
    <tr><th>@detail.UniqueID</th><th class="left">@detail.ErrorType</th><th class="left">@detail.FieldName</th><th class="left">@detail.Message</th><th class="left">@detail.ItemState</th></tr>
    }
</tbody></table>

Est-ce difficile? Pas de ViewState, pas de cycle de vie de la page BS ... Juste du code efficace et pur.

Jason
la source
1

Je peux voir que les deux seuls avantages pour les petits sites sont: 6) Des URL RESTful qui permettent le référencement. 7) Pas d'événements ViewState et PostBack (et de meilleures performances en général)

Les tests pour les petits sites ne sont pas un problème, pas plus que les avantages de conception lorsqu'un site est codé correctement de toute façon, MVC obscurcit à bien des égards et rend les modifications plus difficiles à effectuer. Je continue de décider si ces avantages en valent la peine.

Je peux clairement voir l'avantage de MVC dans les grands sites multi-développeurs.

Rod Rye
la source
1

Le principal avantage que je trouve est qu'il force le projet dans une structure plus testable. Cela peut également être fait assez facilement avec les formulaires Web (modèle MVP), mais nécessite que le développeur comprenne cela, beaucoup ne le font pas.

Les formulaires Web et MVC sont tous deux des outils viables, tous deux excellents dans différents domaines.

J'utilise personnellement des formulaires Web car nous développons principalement des applications B2B / LOB. Mais nous le faisons toujours avec un modèle MVP avec lequel nous pouvons atteindre une couverture de code de 95 +% pour nos tests unitaires. Cela nous permet également d'automatiser les tests sur les propriétés de la valeur de la propriété des contrôles Web est exposée via la vue, par exemple

bool IMyView.IsAdminSectionVisible{
       get{return pnlAdmin.Visible;}
       get{pnlAdmin.Visible=value;}
    }

) Je ne pense pas que ce niveau de test soit aussi facile à atteindre dans MVC, sans polir mon modèle.

En.
la source
0

Vous ne vous sentez plus mal à l'idée d'utiliser des `` contrôles non post-back '' - et de trouver comment les intégrer dans un environnement asp.net traditionnel.

Cela signifie que les contrôles javascript modernes (gratuits à utiliser) tels que ceci ou cela ou cela peuvent tous être utilisés sans que vous essayiez d'adapter une cheville ronde dans un trou carré.

Simon_Weaver
la source
0

Les contrôles javascript modernes ainsi que les requêtes JSON peuvent être gérés très facilement à l'aide de MVC. Là, nous pouvons utiliser de nombreux autres mécanismes pour publier des données d'une action à une autre. C'est pourquoi nous préférons MVC aux formulaires Web. Nous pouvons également créer des pages légères.

Prasanthe
la source
0

Mon opinion personnelle est que, le plus gros désavantage à utiliser ASP.Net MVC est que CODE BLOCKSmélangé avec HTML... l'
enfer html pour les développeurs qui le maintiennent ...

Nitin Sawant
la source