Asp.net core 2前缀路由

ril*_*009 6 c# asp.net-core-mvc .net-core asp.net-core-routing

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

我有不同的控制器

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

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

    //...
}
Run Code Online (Sandbox Code Playgroud)

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

    //...
}
Run Code Online (Sandbox Code Playgroud)

现在我希望管理路线为

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

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

    //...
}
Run Code Online (Sandbox Code Playgroud)

而其他路线仍然存在

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

    //...
}
Run Code Online (Sandbox Code Playgroud)

Nil*_*lay 14

您也可以为此使用属性路由。在 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()
    {
    }
}
Run Code Online (Sandbox Code Playgroud)