ASP.NET MVC

(inclut la mise à jour des outils d’avril 2011)

ASP.NET MVC 3 est une infrastructure permettant de créer des applications web évolutives basées sur des normes à l’aide de modèles de conception bien établis et de la puissance de ASP.NET et du .NET Framework.

Il s’installe côte à côte avec ASP.NET MVC 2, alors commencez à l’utiliser dès aujourd’hui !

Téléchargez le programme d’installation ici

Principales fonctionnalités

  • Système de génération de modèles intégré extensible via NuGet
  • Modèles de projet avec HTML 5
  • Vues expressives, y compris le nouveau moteur d’affichage Razor
  • Crochets puissants avec injection de dépendances et filtres d’action globale
  • Prise en charge de JavaScript riche avec javaScript discret, validation jQuery et liaison JSON
  • Lire la liste complète des fonctionnalités ci-dessous

Nouveautés de ASP.NET MVC 3

Installation et aide

ASP.NET MVC 3 Overview

ASP.NET MVC 3 s’appuie sur ASP.NET MVC 1 et 2, ajoutant d’excellentes fonctionnalités qui simplifient votre code et permettent une extensibilité plus approfondie. Cette rubrique fournit une vue d’ensemble de la plupart des nouvelles fonctionnalités incluses dans cette version, organisées dans les sections suivantes :

Structure extensible avec intégration de la structure MvcS

Le nouveau système Scaffolding facilite la prise en charge et l’utilisation productive si vous débutez entièrement avec l’infrastructure, ainsi que l’automatisation des tâches de développement courantes si vous avez de l’expérience et que vous savez déjà ce que vous faites.

Cela est pris en charge par le nouveau package de génération de modèles NuGet appelé MvcScaffolding. Le terme « Génération de modèles » est utilisé par de nombreuses technologies logicielles pour signifier « générer rapidement un plan de base de votre logiciel que vous pouvez ensuite modifier et personnaliser ». Le package de structure que nous créons pour ASP.NET MVC est très utile dans plusieurs scénarios :

  • Si vous apprenez ASP.NET MVC pour la première fois, car il vous offre un moyen rapide d’obtenir du code utile et opérationnel, que vous pouvez ensuite modifier et adapter en fonction de vos besoins. Il vous évite le traumatisme de regarder une page vide et de ne pas savoir par où commencer!
  • Si vous connaissez bien ASP.NET MVC et explorez maintenant de nouvelles technologies complémentaires telles qu’un mappeur relationnel d’objet, un moteur d’affichage, une bibliothèque de test, etc., car le créateur de cette technologie a peut-être également créé un package de génération de modèles pour celle-ci.
  • Si votre travail implique la création répétée de classes ou de fichiers similaires d’une sorte quelconque, car vous pouvez créer des modèles de modèles personnalisés qui génèrent des montages de test, des scripts de déploiement ou tout autre élément dont vous avez besoin. Tous les membres de votre équipe peuvent également utiliser vos modèles de génération de modèles personnalisés.

Les autres fonctionnalités de la structure MvcS sont les suivantes :

  • Prise en charge des projets C# et VB
  • Prise en charge des moteurs d’affichage Razor et ASPX
  • Prend en charge la génération de modèles dans ASP.NET zones MVC et l’utilisation de dispositions/maîtres d’affichage personnalisés
  • Vous pouvez facilement personnaliser la sortie en modifiant les modèles T4
  • Vous pouvez ajouter de nouveaux modèles de modèles de génération de modèles PowerShell personnalisés et T4 personnalisés. Ces paramètres (et tous les paramètres personnalisés que vous leur avez donnés) s’affichent automatiquement dans la liste de saisie semi-automatique de la console.
  • Vous pouvez obtenir des packages NuGet contenant des modèles de génération supplémentaires pour différentes technologies (par exemple, il existe une preuve de concept pour LINQ to SQL maintenant) et les combiner et les associer

La mise à jour des outils MVC 3 ASP.NET inclut une prise en charge exceptionnelle de Visual Studio pour ce système de génération de modèles, par exemple :

  • La boîte de dialogue Ajouter un contrôleur prend désormais en charge la création, la lecture, la mise à jour et la suppression des actions du contrôleur et des vues correspondantes. Par défaut, cette structure crée le code d’accès aux données à l’aide d’EF Code First.
  • La boîte de dialogue Ajouter un contrôleur prend en charge les modèles de modèles extensibles via des packages NuGet tels que MvcScaffolding. Cela permet de connecter des modèles de modèles personnalisés dans la boîte de dialogue, ce qui vous permettrait de créer des modèles pour d’autres technologies d’accès aux données telles que NHibernate ou même JET avec ODBCDirect si vous êtes si enclin!

Pour plus d’informations sur la génération de modèles dans ASP.NET MVC 3, consultez les ressources suivantes :

Modèles de projet HTML 5

La boîte de dialogue Nouveau projet inclut une case à cocher pour activer les versions HTML 5 des modèles de projet. Ces modèles tirent parti de Modernr 1.7 pour fournir une prise en charge de compatibilité pour HTML 5 et CSS 3 dans les navigateurs de niveau inférieur.

Moteur d’affichage Razor

ASP.NET MVC 3 est fourni avec un nouveau moteur d’affichage nommé Razor qui offre les avantages suivants :

  • La syntaxe Razor est propre et concise, nécessitant un nombre minimal de frappes.
  • Razor est facile à apprendre, en partie parce qu’il est basé sur des langages existants comme C# et Visual Basic.
  • Visual Studio inclut IntelliSense et la colorisation du code pour la syntaxe Razor.
  • Les vues Razor peuvent être testées unitairement sans avoir à exécuter l’application ou à lancer un serveur web.

Voici quelques-unes des nouvelles fonctionnalités razor :

  • @model syntaxe pour spécifier le type passé à la vue.
  • @* *@ syntaxe de commentaire.
  • Possibilité de spécifier des valeurs par défaut (telles que layoutpage) une fois pour l’ensemble d’un site.
  • Méthode Html.Raw permettant d’afficher du texte sans l’encodage HTML.
  • Prise en charge du partage de code entre plusieurs vues (fichiers _viewstart.cshtml ou _viewstart.vbhtml ).

Razor inclut également de nouvelles assistances HTML, telles que les suivantes :

  • Chart. Affiche un graphique, offrant les mêmes fonctionnalités que le contrôle de graphique dans ASP.NET 4.
  • WebGrid. Affiche une grille de données, avec les fonctionnalités de pagination et de tri.
  • Crypto. Utilise des algorithmes de hachage pour créer des mots de passe correctement salés et hachés.
  • WebImage. Affiche une image.
  • WebMail. Envoie un e-mail.

Pour plus d’informations sur Razor, consultez les ressources suivantes :

Prise en charge de plusieurs moteurs d’affichage

La boîte de dialogue Ajouter une vue dans ASP.NET MVC 3 vous permet de choisir le moteur d’affichage que vous souhaitez utiliser, et la boîte de dialogue Nouveau projet vous permet de spécifier le moteur d’affichage par défaut pour un projet. Vous pouvez choisir le moteur d’affichage Web Forms (ASPX), Razor ou un moteur d’affichage open source tel que Spark, NHaml ou NDjango.

Améliorations apportées au contrôleur

Filtres d’action globaux

Parfois, vous souhaitez effectuer une logique avant l’exécution d’une méthode d’action ou après l’exécution d’une méthode d’action. Pour cela, ASP.NET filtres d’action fournis par MVC 2. Les filtres d’action sont des attributs personnalisés qui fournissent un moyen déclaratif d’ajouter un comportement de pré-action et de post-action à des méthodes d’action de contrôleur spécifiques. Toutefois, dans certains cas, vous pouvez spécifier un comportement de pré-action ou de post-action qui s’applique à toutes les méthodes d’action. MVC 3 vous permet de spécifier des filtres globaux en les ajoutant à la GlobalFilters collection. Pour plus d’informations sur les filtres d’action globaux, consultez les ressources suivantes :

Nouvelle propriété « ViewBag »

Les contrôleurs MVC 2 prennent en charge une ViewData propriété qui vous permet de transmettre des données à un modèle d’affichage à l’aide d’une API de dictionnaire à limite tardive. Dans MVC 3, vous pouvez également utiliser une syntaxe un peu plus simple avec la ViewBag propriété pour accomplir le même objectif. Par exemple, au lieu d’écrire ViewData["Message"]="text", vous pouvez écrire ViewBag.Message="text". Vous n’avez pas besoin de définir des classes fortement typées pour utiliser la ViewBag propriété . Étant donné qu’il s’agit d’une propriété dynamique, vous pouvez simplement obtenir ou définir des propriétés et les résoudre dynamiquement au moment de l’exécution. En interne, ViewBag les propriétés sont stockées sous forme de paires nom/valeur dans le ViewData dictionnaire. (Remarque : dans la plupart des versions préliminaires de MVC 3, la ViewBag propriété a été nommée propriété ViewModel .)

Nouveaux types « ActionResult »

Les types suivants ActionResult et les méthodes d’assistance correspondantes sont nouveaux ou améliorés dans MVC 3 :

  • HttpNotFoundResult. Retourne un code de status HTTP 404 au client.
  • RedirectResult. Retourne une redirection temporaire (code HTTP 302 status) ou une redirection permanente (code HTTP 301 status), en fonction d’un paramètre booléen. Parallèlement à cette modification, la classe Controller dispose désormais de trois méthodes pour effectuer des redirections permanentes : RedirectPermanent, RedirectToRoutePermanentet RedirectToActionPermanent. Ces méthodes retournent une instance de RedirectResult avec la Permanent propriété définie sur true.
  • HttpStatusCodeResult. Retourne un code HTTP status spécifié par l’utilisateur.

Améliorations de JavaScript et d’Ajax

Par défaut, Ajax et les assistances de validation dans MVC 3 utilisent une approche JavaScript discrète. JavaScript discret évite d’injecter du Code JavaScript inline dans le code HTML. Votre code HTML est ainsi plus petit et moins encombré, et facilite l’échange ou la personnalisation des bibliothèques JavaScript. Les assistances de validation dans MVC 3 utilisent également le jQueryValidate plug-in par défaut. Si vous souhaitez un comportement MVC 2, vous pouvez désactiver JavaScript discret à l’aide d’un paramètre de fichierweb.config . Pour plus d’informations sur les améliorations apportées à JavaScript et Ajax, consultez les ressources suivantes :

validation Client-Side activée par défaut

Dans les versions antérieures de MVC, vous devez appeler explicitement la Html.EnableClientValidation méthode à partir d’une vue afin d’activer la validation côté client. Dans MVC 3, cela n’est plus obligatoire, car la validation côté client est activée par défaut. (Vous pouvez le désactiver à l’aide d’un paramètre dans le fichier web.config .)

Pour que la validation côté client fonctionne, vous devez toujours référencer les bibliothèques jQuery et jQuery Validation appropriées dans votre site. Vous pouvez héberger ces bibliothèques sur votre propre serveur ou les référencer à partir d’un réseau de distribution de contenu (CDN) comme les CDN de Microsoft ou Google.

Validateur distant

ASP.NET MVC 3 prend en charge la nouvelle classe RemoteAttribute qui vous permet de tirer parti de la prise en charge du validateur à distance du plug-in jQuery Validation. Cela permet à la bibliothèque de validation côté client d’appeler automatiquement une méthode personnalisée que vous définissez sur le serveur afin d’effectuer une logique de validation qui ne peut être effectuée que côté serveur.

Dans l’exemple suivant, l’attribut spécifie que la Remote validation du client appelle une action nommée UserNameAvailable sur la UsersController classe afin de valider le UserName champ.

public class User 
{
    [Remote("UserNameAvailable", "Users")]
    public string UserName { get; set; }
}

L’exemple suivant montre le contrôleur correspondant.

public class UsersController 
{ 
    public bool UserNameAvailable(string username) 
    { 
        if(MyRepository.UserNameExists(username)) 
        { 
            return "false"; 
        } 
        return "true"; 
    } 
}

Pour plus d’informations sur l’utilisation de l’attribut Remote , consultez Guide pratique pour implémenter la validation à distance dans ASP.NET MVC dans la bibliothèque MSDN.

Prise en charge de la liaison JSON

ASP.NET MVC 3 inclut la prise en charge de la liaison JSON intégrée qui permet aux méthodes d’action de recevoir des données encodées JSON et de les lier aux paramètres d’action-méthode. Cette fonctionnalité est utile dans les scénarios impliquant des modèles client et une liaison de données. (Les modèles clients vous permettent de mettre en forme et d’afficher un seul élément de données ou un ensemble d’éléments de données à l’aide de modèles qui s’exécutent sur le client.) MVC 3 vous permet de connecter facilement des modèles clients avec des méthodes d’action sur le serveur qui envoie et reçoit des données JSON. Pour plus d’informations sur la prise en charge de la liaison JSON, consultez la section Améliorations JavaScript et AJAX du billet de blog MVC 3 Preview de Scott Guthrie.

Améliorations apportées à la validation du modèle

Attributs de métadonnées « DataAnnotations »

ASP.NET MVC 3 prend en charge DataAnnotations les attributs de métadonnées tels que DisplayAttribute.

Classe « ValidationAttribute »

La ValidationAttribute classe a été améliorée dans .NET Framework 4 pour prendre en charge une nouvelle IsValid surcharge qui fournit plus d’informations sur le contexte de validation actuel, comme l’objet en cours de validation. Cela permet des scénarios plus riches dans lesquels vous pouvez valider la valeur actuelle en fonction d’une autre propriété du modèle. Par exemple, le nouvel CompareAttribute attribut vous permet de comparer les valeurs de deux propriétés d’un modèle. Dans l’exemple suivant, la ComparePassword propriété doit correspondre au Password champ pour être valide.

public class User
{ 
    [Required]
    public string Password { get; set; } 
    [Required, Compare("Password")] 
    public string ComparePassword { get; set; } 
}

Validation Interfaces

L’interface IValidatableObject vous permet d’effectuer une validation au niveau du modèle et vous permet de fournir des messages d’erreur de validation spécifiques à l’état du modèle global ou entre deux propriétés au sein du modèle. MVC 3 récupère désormais les erreurs de l’interface lors de la IValidatableObject liaison de modèle, et signale ou met automatiquement en surbrillance les champs affectés dans une vue à l’aide des assistances de formulaire HTML intégrées.

L’interface IClientValidatable permet à ASP.NET MVC de découvrir au moment de l’exécution si un validateur prend en charge la validation du client. Cette interface a été conçue pour qu’elle puisse être intégrée à divers frameworks de validation.

Pour plus d’informations sur les interfaces de validation, consultez la section Améliorations de la validation des modèles du billet de blog MVC 3 Preview de Scott Guthrie. (Notez toutefois que la référence à « IValidateObject » dans le blog doit être « IValidatableObject ».)

Améliorations apportées à l’injection de dépendances

ASP.NET MVC 3 offre une meilleure prise en charge de l’application de l’injection de dépendances (DI) et de l’intégration avec des conteneurs d’injection de dépendances ou d’inversion de contrôle (IOC). La prise en charge de l’IE a été ajoutée dans les domaines suivants :

  • Contrôleurs (inscription et injection de fabriques de contrôleurs, injection de contrôleurs).
  • Affichages (inscription et injection de moteurs d’affichage, injection de dépendances dans des pages d’affichage).
  • Filtres d’action (localisation et injection de filtres).
  • Classeurs de modèles (inscription et injection).
  • Fournisseurs de validation de modèle (inscription et injection).
  • Fournisseurs de métadonnées de modèle (inscription et injection).
  • Fournisseurs de valeurs (inscription et injection).

MVC 3 prend en charge la bibliothèque Common Service Locator et n’importe quel conteneur di qui prend en charge l’interface de IServiceLocator cette bibliothèque. Il prend également en charge une nouvelle IDependencyResolver interface qui facilite l’intégration des infrastructures d’intégration d’intégration.

Pour plus d’informations sur l’AUTHENTIFICATION dans MVC 3, consultez les ressources suivantes :

Autres nouvelles fonctionnalités

Intégration de NuGet

ASP.NET MVC 3 installe et active automatiquement NuGet dans le cadre de sa configuration. NuGet est un gestionnaire de package open source gratuit qui facilite la recherche, l’installation et l’utilisation des bibliothèques et outils .NET dans vos projets. Il fonctionne avec tous les types de projets Visual Studio (y compris ASP.NET Web Forms et ASP.NET MVC).

NuGet permet aux développeurs qui gèrent des projets open source (par exemple, des projets comme Moq, NHibernate, Ninject, StructureMap, NUnit, Windsor, RhinoMocks et Elmah) d’empaqueter leurs bibliothèques et de les inscrire dans une galerie en ligne. Il est alors facile pour les développeurs .NET qui souhaitent utiliser l’une de ces bibliothèques de trouver le package et de l’installer dans les projets sur lesquels ils travaillent.

Avec la mise à jour des outils ASP.NET 3, les modèles de projet incluent les packages NuGet préinstallés des bibliothèques JavaScript, afin qu’ils puissent être mis à jour via NuGet. Entity Framework Code First est également préinstallé en tant que package NuGet.

Pour plus d'informations sur NuGet, consultez la documentation NuGet.

mise en cache de sortie Partial-Page

ASP.NET MVC prend en charge la mise en cache de sortie des réponses pleine page depuis la version 1. MVC 3 prend également en charge la mise en cache de sortie de page partielle, ce qui vous permet de mettre facilement en cache des régions ou des fragments d’une réponse. Pour plus d’informations sur la mise en cache, consultez la section Mise en cache de sortie de page partielle du billet de blog de Scott Guthrie sur le candidat de publication MVC 3 et la section Mise en cache de la sortie d’action enfant des notes de publication de MVC 3.

Contrôle granulaire sur la validation des requêtes

ASP.NET MVC dispose d’une validation des requêtes intégrée qui permet de protéger automatiquement contre les attaques par injection XSS et HTML. Toutefois, vous souhaitez parfois désactiver explicitement la validation des demandes, par exemple si vous souhaitez permettre aux utilisateurs de publier du contenu HTML (par exemple, dans des entrées de blog ou du contenu CMS). Vous pouvez maintenant ajouter un attribut AllowHtml aux modèles ou afficher des modèles pour désactiver la validation des demandes par propriété pendant la liaison de modèle. Pour plus d’informations sur la validation des demandes, consultez les ressources suivantes :

Boîte de dialogue Extensible « Nouveau projet »

Dans ASP.NET MVC 3, vous pouvez ajouter des modèles de projet, des moteurs d’affichage et des frameworks de projet de test unitaire à la boîte de dialogue Nouveau projet .

Améliorations de la génération de modèles

ASP.NET modèles de structure MVC 3 permettent de mieux identifier les propriétés de clé primaire sur les modèles et de les gérer de manière appropriée que dans les versions antérieures de MVC. (Par exemple, les modèles de structure vérifient maintenant que la clé primaire n’est pas générée en tant que champ de formulaire modifiable.)

Par défaut, les modèles créer et modifier des modèles utilisent désormais l’assistance Html.EditorFor au lieu de l’assistance Html.TextBoxFor . Cela améliore la prise en charge des métadonnées sur le modèle sous la forme d’attributs d’annotation de données lorsque la boîte de dialogue Ajouter une vue génère une vue.

Nouvelles surcharges pour « Html.LabelFor » et « Html.LabelForModel »

De nouvelles surcharges de méthode ont été ajoutées pour les méthodes d’assistance LabelFor et LabelForModel . Les nouvelles surcharges vous permettent de spécifier ou de remplacer le texte d’étiquette.

Prise en charge du contrôleur sessionless

Dans ASP.NET MVC 3, vous pouvez indiquer si vous souhaitez qu’une classe de contrôleur utilise l’état de session et, si c’est le cas, si l’état de session doit être en lecture/écriture ou en lecture seule. Pour plus d’informations sur la prise en charge du contrôleur sessionless, consultez Notes de publication de MVC 3.

Nouvelle classe « AdditionalMetadataAttribute »

Vous pouvez utiliser l’attribut AdditionalMetadata pour remplir le ModelMetadata.AdditionalValues dictionnaire d’une propriété de modèle. Par exemple, si un modèle d’affichage a une propriété qui doit être affichée uniquement pour un administrateur, vous pouvez annoter cette propriété comme indiqué dans l’exemple suivant :

public class ProductViewModel 
{
    [AdditionalMetadata("AdminOnly", true)]
    public string RefundCode {get; set;}
}

Ces métadonnées sont mises à la disposition de n’importe quel modèle d’affichage ou d’éditeur lorsqu’un modèle d’affichage produit est rendu. Il vous appartient d’interpréter les informations de métadonnées.

Améliorations de AccountController

Le AccountController dans le modèle de projet Internet a été considérablement amélioré.

Nouveau modèle de projet Intranet

Un nouveau modèle de projet Intranet est inclus qui active l’authentification Windows et supprime accountController.