Asp.net core 2 Префиксная маршрутизация
Как создать префиксную маршрутизацию для работы 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/...
2 ответа
Решение
Вы также можете использовать Attribute Routing для этого. До 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()
{
}
}