【问题标题】:Asp.net core 2 Prefix RoutingAsp.net core 2 前缀路由
【发布时间】:2017-12-21 11:38:45
【问题描述】:

如何为 MVC CRUD 操作创建前缀路由。我正在开发一个需要管理员和前端的应用程序。对于管理员,我希望所有路由都指向localhost:5000/admin/....

我有不同的控制器

public class RoomsController : Controller
{
    // GET: Rooms        
    public async Task<IActionResult> Index()
    {

        return View(await _context.Rooms.ToListAsync());
    }

    //...
}

public class SlidersController : Controller
{
    private readonly ApplicationDbContext _context;

    public SlidersController(ApplicationDbContext context)
    {
        _context = context;
    }

    // GET: Sliders
    public async Task<IActionResult> Index()
    {
        return View(await _context.Sliders.ToListAsync());
    }

    //...
}

现在我希望管理员路由是

localhost:5000/admin/rooms
localhost:5000/admin/slider

其他路线保留

localhost:5000/
localhost:5000/about
localhost:5000/...

【问题讨论】:

  • 可能值得关注的领域 - 见How to use an Area in ASP.NET Core
  • admin/ 前缀到底有什么意义?这对您的路线行为有任何影响吗?
  • 我正在尝试将管理端与普通客户区分开。所以我决定用@CalC option Area

标签: c# .net-core asp.net-core-mvc asp.net-core-routing


【解决方案1】:

您也可以为此使用属性路由。在 ASP.Net Web API 之前,我们有名为 [RoutePrefix] 的属性,但在 ASP.Net Core 2 中,我们可以将 [Route] 属性用于相同的目的。

[Route("api/[controller]/[action]")]
public class DistrictController : ControllerBase
{

    [Route("{id:int:min(1)}")] // i.e. GET /api/District/GetDetails/10
    public IActionResult GetDetails(int id)
    {
    }

    // i.e. GET /api/District/GetPage/?id=10
    public IActionResult GetPage(int page)
    {
    }

    [HttpDelete]
    [Route("{id:int:min(1)}")] // i.e. Delete /api/District/Delete/10
    public IActionResult Delete(int id)
    {
    }

    [HttpGet]
    [Route("~/api/States/GetAllState")] // i.e. GET /api/States/GetAllState
    public IActionResult GetStates()
    {
    }
}

【讨论】:

  • 在我的情况下,就像用 Route 替换 RoutePrefix 一样简单,不必更改字符串值,被 Swagger 拾取就好了。我正在从 .NET 4.5 转换到 Core 6.0。留在这里留给未来的访客。谢谢!
【解决方案2】:

我通过使用 MVC 区域来解决问题 docs

【讨论】:

  • 使用路由前缀是更好的答案;这应该是公认的答案。
猜你喜欢
  • 2019-10-21
  • 2020-11-30
  • 2020-10-07
  • 1970-01-01
  • 2018-08-25
  • 1970-01-01
  • 2016-06-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多