Comment utiliser un Area
dans ASP.NET Core? Ce n'est pas correctement documenté! Supposons que j'ai une application nécessitant une section Admin. Cette section nécessite que ses Vues soient des lieux dans cette zone. Toutes les demandes commençant par Admin/
devront être redirigées vers cette zone.Comment utiliser une zone dans ASP.NET Core
Répondre
Afin d'inclure une zone dans une application ASP.NET de base, nous devons d'abord comprendre une voie classique dans le fichier Startup.cs
(il est préférable de le placer avant toute voie non-zone):
Dans démarrage .cs/Configurer la méthode:
app.UseMvc(routes =>
{
routes.MapRoute("areaRoute", "{area:exists}/{controller=Admin}/{action=Index}/{id?}");
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
Ensuite, créez un dossier nommé Areas
dans la racine de l'application et faire une autre nom Admin
dans l'ancien, font également ces dossiers à l'intérieur Admin
(ViewComponent est facultatif):
Maintenant, nous créons un contrôleur dans le dossier Controllers
nommé AdminController
, le contenu peut être comme:
[Area("Admin")]
[Route("admin")]
public class AdminController : Controller
{
public AdminController()
{
// do stuff
}
public IActionResult Index()
{
return View();
}
[Route("[action]/{page:int?}")]
public IActionResult Orders()
{
return View();
}
[Route("[action]")]
public IActionResult Shop()
{
return View();
}
[Route("[action]/newest")]
public IActionResult Payments()
{
return View();
}
}
Maintenant, pour que cela fonctionne, vous aurez besoin de créer des vues pour toutes les actions qui en renvoient une. La hiérarchie des vues est comme ce que vous avez dans un dossier Vues non-zone:
Maintenant, vous devriez être bon d'aller!
Question: Et si j'ai quoi avoir un autre contrôleur dans ma zone?
Réponse:
Ajoutez juste à côté d'un autre contrôleur AdminController
et assurez-vous que les routes sont comme les suivantes:
[Area("Admin")]
[Route("admin/[controller]")]
public class ProductsController : Controller
{
public ProductsController()
{
//
}
[Route("{page:int?}")]
public IActionResult Index()
{
return View();
}
}
La partie importante est [Route("admin/[controller]")]
. Avec cela, vous pouvez garder le style de routage à admin/controller/action/...
Ceci est testé sur RC1, RC2 et 1.0. Cela fonctionne totalement. – VSG24
J'ai créé un échantillon comme vous le montre ci-dessus et ajouter une zone d'administration, cela fonctionne bien, mais quand j'ai publié mon projet, il ne publie pas la zone admin et les vues et fichiers, comment puis-je gérer? – motevalizadeh
@motevallizadeh, Une autre question à moi! https://stackoverflow.com/questions/37326068/asp-net-core-rc2-area-not-published – VSG24