web-dev-qa-db-ja.com

Asp.netコア2プレフィックスルーティング

MVCCRUD操作のプレフィックス付きルーティングを作成する方法。管理者とフロントエンドを必要とするアプリケーションに取り組んでいます。管理者の場合、すべてのルートが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/...
6
rilly009

MVCエリアを使用して問題を解決します docs

2
rilly009

これには、属性ルーティングを使用することもできます。 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()
    {
    }
}
4
Nilay