如何在同一个控制器上创建一个带有Web API和非Web API操作的控制器。
当我这样做时,非Web API操作有404错误。
我在不同的文章中读到,它可以与ASP.NET核心混合,但不起作用。
返回404表示:
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()
{
}
}
或
http://localhost:5000/api/board/
返回404public 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()
{
}
}
我想我得到了第二个解决方案并使用http://localhost:5000/board/getall进行API操作
答案 0 :(得分:8)
您可以使用:
[Route("api/[controller]")]
public class BoardController : Controller
{
private IDataContext dataContext;
public BoardController(IDataContext dataContext)
{
this.dataContext = dataContext;
}
[Route("/[controller]/[action]")]
public IActionResult Index(int boardID)
{
return View();
}
[HttpGet]
public IEnumerable<Board> GetAll()
{
}
}
在路径前面加上斜杠会覆盖控制器级路由属性。