asp.net-mvc-routing - 如何在 ASP.NET Core 中使用区域

标签 asp.net-mvc-routing asp.net-core asp.net-core-mvc asp.net-mvc-areas

如何在 ASP.NET Core 中使用区域

我有一个需要管理部分的应用程序。该部分要求将其 View 放置在该区域中。所有以 Admin/ 开头的请求都需要重定向到该区域。

最佳答案

为了在 ASP.NET Core 应用中包含区域,首先我们需要在 Startup.cs 文件中包含常规路由(最好将其放置在任何非区域路由之前) ):

在 Startup.cs/Configure 方法中:

app.UseMvc(routes =>
{
    routes.MapRoute("areaRoute", "{area:exists}/{controller=Admin}/{action=Index}/{id?}");

    routes.MapRoute(
        name: "default",
        template: "{controller=Home}/{action=Index}/{id?}");
});

然后在应用程序根目录中创建一个名为 Areas 的文件夹,并在前者中创建另一个名为 Admin 的文件夹,同时在 Admin 中创建这些文件夹( ViewComponent 是可选的):

enter image description here

现在我们在Controllers文件夹中创建一个名为AdminController的 Controller ,内容可以是这样的:

[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();
    }
}

现在为了使其正常工作,您需要为所有返回一个的操作创建 View 。 View 的层次结构就像非区域 View 文件夹中的层次结构:

enter image description here

现在,您应该可以出发了!

问题: 如果我想在我的区域内有另一个 Controller 怎么办?

答案:

只需在 AdminController 旁边添加另一个 Controller 并确保路由如下所示:

[Area("Admin")]
[Route("admin/[controller]")]
public class ProductsController : Controller
{
    public ProductsController()
    {
        //
    }

    [Route("{page:int?}")]
    public IActionResult Index()
    {
        return View();
    }
}

重要的部分是[Route("admin/[controller]")]。这样您就可以保持路由到 admin/controller/action/...

的风格

关于asp.net-mvc-routing - 如何在 ASP.NET Core 中使用区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36535511/

相关文章:

asp.net-core-mvc - 在 EF7 中加载引用

asp.net-mvc - 而且,ASP.NET MVC Content文件夹的神奇之处是什么?

c# - MVC WebAPI 中的 MapRoute 或 MapHttpRoute

asp.net - 如何在构建期间设置 appsettings.json 文件中的键值

c# - 使用SQL查询在数据库中创建新条目时添加(最新添加的Id + 1)

azure - 创建应用服务订阅 EMPTY

asp.net-mvc - RouteValueDictionary 初始化和 MapRoute 问题

wordpress - MVC3 + WordPress IIS Url 重写规则

c# - ASP.Net Core Web API 捕获用于日志记录的 HTTP 请求

asp.net-core - ResponseCache 属性不在客户端缓存数据