Table des matières
Admin Area Index
Root Index
Maison développement back-end Tutoriel C#.Net [ASP.NET MVC Mavericks Road] 08 - Utilisation de la zone

[ASP.NET MVC Mavericks Road] 08 - Utilisation de la zone

Dec 30, 2016 pm 02:35 PM

[ASP.NET
MVC Mavericks Road] 08 - Zone utilisant

ASP.NET MVC permet d'utiliser Area (zone) pour organiser des applications Web. Chaque zone représente un aspect différent de l'application. .Module fonctionnel. Ceci est très utile pour les grands projets. Area permet à chaque module fonctionnel d'avoir son propre dossier avec son propre contrôleur, vue et modèle, mais cela ajoute également un certain degré de difficulté à la gestion.

Répertoire de cet article


Créer une zone

Cliquez avec le bouton droit sur le projet et sélectionnez Ajouter->Zone, la boîte de dialogue suivante pour remplir la zone apparaîtra :

[ASP.NET MVC Mavericks Road] 08 - Utilisation de la zone

Après avoir cliqué sur Ajouter, la structure du répertoire du projet est la suivante :

[ASP.NET MVC Mavericks Road] 08 - Utilisation de la zone

Semblable à la création d'une structure de projet MVC vide, la zone d'administration possède ses propres dossiers Contrôleurs, Modèles et Vues, ​​la différence est qu'il existe un fichier AdminAreaRegistration.cs supplémentaire. Ce fichier définit une classe appelée AdminAreaRegistration. Son contenu est le suivant : <.>

namespace MvcApplication1.Areas.Admin {
    public class AdminAreaRegistration : AreaRegistration {
        public override string AreaName {
            get {
                return "Admin";
            }
        }

        public override void RegisterArea(AreaRegistrationContext context) {
            context.MapRoute(
                "Admin_default",
                "Admin/{controller}/{action}/{id}",
                new { action = "Index", id = UrlParameter.Optional }
            );
        }
    }
}
Copier après la connexion
Le système génère automatiquement La classe AdminAreaRegistration hérite de la classe abstraite AreaRegistration et remplace la propriété

AreaName et la méthode RegisterArea. Dans la méthode RegisterArea, il définit pour nous une route par défaut. Nous pouvons également définir d'autres routes spécifiques à la zone d'administration dans cette méthode. Mais une chose à noter est que si vous souhaitez nommer l'itinéraire ici, assurez-vous qu'il est différent de l'ensemble de l'application.


La méthode MapRoute de la classe AreaRegistrationContext est utilisée de la même manière que la méthode MapRoute de la classe RouteCollection, sauf que la classe AreaRegistrationContext limite les routes enregistrées pour qu'elles correspondent uniquement au contrôleur de la zone actuelle, donc si vous ajoutez le L'espace de noms par défaut du contrôleur a été modifié et le système de routage ne pourra pas trouver ce contrôleur. La méthode

RegisterArea ne nous oblige pas à l'appeler manuellement. La méthode Application_Start dans Global.asax a déjà le code suivant pour le faire pour nous :

protected void Application_Start() {
    AreaRegistration.RegisterAllAreas();

    WebApiConfig.Register(GlobalConfiguration.Configuration);
    FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
    RouteConfig.RegisterRoutes(RouteTable.Routes);
    BundleConfig.RegisterBundles(BundleTable.Bundles);
}
Copier après la connexion
Call AreaRegistration. La méthode permet à l'application MVC de rechercher toutes les classes qui héritent de AreaRegistration après le démarrage et d'appeler leur méthode RegisterArea pour chacune de ces classes.


Remarque : ne modifiez pas facilement l'ordre des méthodes d'enregistrement dans Application_Start. Si vous placez la méthode RouteConfig.RegisterRoutes avant la méthode AreaRegistration.RegisterAllAreas, l'enregistrement des routes Area se fera après l'enregistrement de la route. est en ordre, cela entraînera le contrôleur qui demandera à la zone de correspondre au mauvais itinéraire.

Opération de zone

L'ajout d'un contrôleur, d'une vue et d'un modèle dans la zone est identique à l'ajout général. Ici, on ajoute un contrôleur nommé Home dans la zone Admin, le code est le suivant :

public class HomeController : Controller {
        
    public ActionResult Index() {
        return View();
    }
}
Copier après la connexion
Ensuite on ajoute une View pour l'Index Acton, le code est le suivant :

@{ 
    ViewBag.Title = "Index";
    Layout = null; 
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    <p>
        <h2 id="Admin-nbsp-Area-nbsp-Index">Admin Area Index</h2>
    </p>
</body>
</html>
Copier après la connexion

Exécutez l'application, puis localisez l'URL vers /Admin/Home/Index. Voici le résultat :

[ASP.NET MVC Mavericks Road] 08 - Utilisation de la zone<. 🎜>

Jusqu'à présent, nous avons vu que le flux de travail dans Area est en fait le même que le processus dans le répertoire racine. Mais Area n’est pas un espace de travail complètement indépendant, jetons un coup d’œil ci-dessous.


Problème d'ambiguïté du contrôleur


Imaginez si nous ajoutons maintenant un contrôleur nommé Home au dossier Controller dans le répertoire racine, alors nous positionnons l'URL vers / Accueil/Index, le système de routage peut-il correspondre au contrôleur dans le répertoire racine ?

Après avoir ajouté le HomeController dans le dossier Controllers du répertoire racine, ajoutez une vue pour l'index. Le contenu est arbitraire :

L'itinéraire ne sera pas modifié. système défini dans le fichier RouteConfig.cs. Routage par défaut :
...
<body>
    <p>
        <h2 id="Root-nbsp-Index">Root Index</h2>
    </p>
</body>
...
Copier après la connexion

Exécutez le programme et localisez l'URL vers /Home/Index. En conséquence, nous verrons le message d'erreur suivant :
public static void RegisterRoutes(RouteCollection routes) {
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
    );
}
Copier après la connexion

出现这个问题是因为路由系统进行匹配的时候出现了Controller同名的歧义。

当Area被注册的时候,Area中定义的路由被限制了只寻找 Area 中的Controller,所以我们请求 /Admin/Home/Index 时能正常得到 MvcApplication1.Areas.Admin.Controllers 命名空间的 HomeController。然而我们在RouteConfig.cs文件的RegisterRoutes方法中定义的路由并没有类似的限制。

为了解决这个问题,我们需要在RouteConfig.cs文件中定义的路由中加上对应的 namespaces 参数。RouteConfig.cs 中修改后的路由如下:

public static void RegisterRoutes(RouteCollection routes) {
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
        namespaces: new[] { "MvcApplication1.Controllers" }
    );
}
Copier après la connexion

运行程序,如下结果说明解决了同名歧义问题:

[ASP.NET MVC Mavericks Road] 08 - Utilisation de la zone

添加了 namespaces 参数后,路由系统在对这个路由进行匹配时,优先匹配指定命名空间的controller,如果匹配到则即刻停止查找,如果在指定的命名空间下没有匹配到对应的controller,再按照一般的方式进行匹配。

生成Area URL链接

关于Area的URL链接生成,可以分为这么三种情况:第一种是在当前Area生成指向当前Area的链接;第二种是生成指向其他Area的链接;第三种是在某个Area中生成指向根目录的链接。下面是这三种情况生成链接的方法,使用的路由定义是系统默认的。

如果要在Area中生成当前Area的URL链接,直接用下面的方法就行:

@Html.ActionLink("Click me", "About")
Copier après la connexion

它根据当前所在的Area和Controller会生成如下Html代码:

<a href="/Admin/Home/About">Click me</a>
Copier après la connexion


如果要生成其他Area的URL链接,则需要在Html.ActionLink方法的匿名参数中使用一个名为area的变量来指定要生成链接的Area名称,如下:

@Html.ActionLink("Click me to go to another area", "Index", new { area = "Support" })
Copier après la connexion

它会根据被指定的Area去找路由的定义,假定在Support Area中定义了对应的路由,那么它会生成如下链接:

<a href="/Support/Home/Index">Click me to go to another area</a>
Copier après la connexion


如果要在当前Area生成指根目录某个controller的链接,那么只要把area变量置成空字符串就行,如下:

@Html.ActionLink("Click me to go to top-level part", "Index", new { area = "" })
Copier après la connexion

它会生成如下Html链接:
<a href="/Home/Index">Click me to go to top-level part</a>
Copier après la connexion

 以上就是[ASP.NET MVC 小牛之路]08 - Area 使用的内容,更多相关内容请关注PHP中文网(www.php.cn)!


Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Architecture PHP MVC : créer des applications Web pour le futur Architecture PHP MVC : créer des applications Web pour le futur Mar 03, 2024 am 09:01 AM

Introduction Dans le monde numérique en évolution rapide d'aujourd'hui, il est crucial de créer des applications WEB robustes, flexibles et maintenables. L'architecture PHPmvc fournit une solution idéale pour atteindre cet objectif. MVC (Model-View-Controller) est un modèle de conception largement utilisé qui sépare les différents aspects d'une application en composants indépendants. Les fondements de l'architecture MVC Le principe fondamental de l'architecture MVC est la séparation des préoccupations : Modèle : encapsule les données et la logique métier de l'application. Vue : responsable de la présentation des données et de la gestion des interactions des utilisateurs. Contrôleur : coordonne l'interaction entre les modèles et les vues, gère les demandes des utilisateurs et la logique métier. Architecture PHPMVC L'architecture phpMVC suit le modèle MVC traditionnel mais introduit également des fonctionnalités spécifiques au langage. Ce qui suit est PHPMVC

Un guide avancé de l'architecture PHP MVC : débloquer des fonctionnalités avancées Un guide avancé de l'architecture PHP MVC : débloquer des fonctionnalités avancées Mar 03, 2024 am 09:23 AM

L'architecture MVC (Model-View-Controller) est l'un des modèles les plus populaires dans le développement PHP car elle fournit une structure claire pour organiser le code et simplifier le développement d'applications WEB. Bien que les principes de base de MVC soient suffisants pour la plupart des applications Web, ils présentent certaines limites pour les applications qui doivent gérer des données complexes ou implémenter des fonctionnalités avancées. Séparation de la couche modèle La séparation de la couche modèle est une technique courante dans l'architecture MVC avancée. Cela implique de diviser une classe de modèle en sous-classes plus petites, chacune se concentrant sur une fonctionnalité spécifique. Par exemple, pour une application de commerce électronique, vous pouvez diviser la classe de modèle principale en un modèle de commande, un modèle de produit et un modèle client. Cette séparation contribue à améliorer la maintenabilité et la réutilisation du code. Utiliser l'injection de dépendances

Comment implémenter le modèle MVC en utilisant PHP Comment implémenter le modèle MVC en utilisant PHP Jun 07, 2023 pm 03:40 PM

Le modèle MVC (Model-View-Controller) est un modèle de conception logicielle couramment utilisé qui peut aider les développeurs à mieux organiser et gérer le code. Le modèle MVC divise l'application en trois parties : Modèle, Vue et Contrôleur, chaque partie a son propre rôle et ses propres responsabilités. Dans cet article, nous verrons comment implémenter le modèle MVC à l'aide de PHP. Modèle Un modèle représente les données et le traitement des données d'une application. en général,

Découvrir le succès du framework SpringMVC : pourquoi il est si populaire Découvrir le succès du framework SpringMVC : pourquoi il est si populaire Jan 24, 2024 am 08:39 AM

Le framework SpringMVC décrypté : Pourquoi est-il si populaire, des exemples de code spécifiques sont nécessaires Introduction : Dans le domaine actuel du développement logiciel, le framework SpringMVC est devenu un choix très populaire parmi les développeurs. Il s'agit d'un framework Web basé sur le modèle d'architecture MVC, offrant une méthode de développement flexible, légère et efficace. Cet article approfondira le charme du framework SpringMVC et démontrera sa puissance à travers des exemples de code spécifiques. 1. Avantages de SpringMVC Framework Méthode de configuration flexible Spr

Comment utiliser l'architecture MVC pour concevoir des projets en PHP Comment utiliser l'architecture MVC pour concevoir des projets en PHP Jun 27, 2023 pm 12:18 PM

Dans le développement Web, MVC (Model-View-Controller) est un modèle architectural couramment utilisé pour traiter et gérer les données, l'interface utilisateur et la logique de contrôle d'une application. En tant que langage de développement Web populaire, PHP peut également utiliser l'architecture MVC pour concevoir et créer des applications Web. Cet article présentera comment utiliser l'architecture MVC pour concevoir des projets en PHP, et expliquera ses avantages et ses précautions. Qu'est-ce que MVCMVC est un modèle d'architecture logicielle couramment utilisé dans les applications Web. VM

Du routage aux vues : une exploration approfondie de l'architecture MVC de Beego Du routage aux vues : une exploration approfondie de l'architecture MVC de Beego Jun 23, 2023 am 10:53 AM

Beego est un framework d'application Web basé sur le langage Go, qui présente les avantages de hautes performances, de simplicité et de facilité d'utilisation, ainsi que d'une grande évolutivité. Parmi eux, l'architecture MVC est l'un des concepts de conception de base du framework Beego. Elle peut aider les développeurs à mieux gérer et organiser le code, à améliorer l'efficacité du développement et la qualité du code. Cet article approfondira l'architecture MVC de Beego afin que les développeurs puissent mieux comprendre et utiliser le framework Beego. 1. Introduction à l'architecture MVC MVC, à savoir Model-View-Controller, est un

Développer MVC avec le framework PHP8 : un guide étape par étape Développer MVC avec le framework PHP8 : un guide étape par étape Sep 11, 2023 am 10:05 AM

Développement de MVC avec le framework PHP8 : un guide étape par étape Introduction : MVC (Model-View-Controller) est un modèle d'architecture logicielle couramment utilisé pour séparer la logique, les données et l'interface utilisateur d'une application. Il fournit une structure qui sépare l'application en trois composants distincts pour une meilleure gestion et maintenance du code. Dans cet article, nous explorerons comment utiliser le framework PHP8 pour développer une application conforme au modèle MVC. Première étape : comprendre le modèle MVC Avant de commencer à développer une application MVC, je

Explication détaillée de Spring MVC : analyse approfondie de ce framework puissant Explication détaillée de Spring MVC : analyse approfondie de ce framework puissant Dec 29, 2023 am 08:09 AM

SpringMVC est un framework de développement JavaWeb très populaire, largement apprécié pour ses fonctions puissantes et sa flexibilité. Son idée de conception est basée sur le modèle architectural MVC (Model-View-Controller), qui réalise le découplage et la modularisation de l'application en divisant l'application en trois parties : modèle, vue et contrôleur. Dans cet article, nous aborderons divers aspects du framework SpringMVC, notamment le traitement et le transfert des requêtes, le traitement des modèles et des vues,

See all articles