How to make one controller with web API and non web API actions on the same controller.
When I make this, I have a 404 error for the non web API action.
I have read in differents article that it's possible to mix with ASP.NET core , but does not work.
Return 404 for:
- http://localhost:5000/board/index/1
http://localhost:5000/board/index?boardID=1
[Route("api/[controller]")] public class BoardController : Controller { private IDataContext dataContext; public BoardController(IDataContext dataContext) { this.dataContext = dataContext; } public IActionResult Index(int boardID) { return View(); } [HttpGet] public IEnumerable<Board> GetAll() { } }
Or
Return 404 for http://localhost:5000/api/board/
public class BoardController : Controller
{
private IDataContext dataContext;
public BoardController(IDataContext dataContext)
{
this.dataContext = dataContext;
}
public IActionResult Index(int boardID)
{
return View();
}
[HttpGet]
public IEnumerable<Board> GetAll()
{
}
}
I think I get my second solution and use http://localhost:5000/board/getall for API action
GetAll
is a web-api-method andIndex
is a action of the controller.GetAll
should be in a class like BoardRepository or BoardService. They both are completely different methods. You could callGetAll
possibly from another controller with e.g. different DependencyInjection.. simply, don't merge those two (and it's neither beautiful). You could call many different Services/WebApi-methods on many controllers. This just makes it difficult.