混合web api动作和非api动作相同的控制器asp.net核心

时间:2016-12-20 08:36:18

标签: c# asp.net-core asp.net-core-mvc .net-core

如何在同一个控制器上创建一个带有Web API和非Web API操作的控制器。

当我这样做时,非Web API操作有404错误。

我在不同的文章中读到,它可以与ASP.NET核心混合,但不起作用。

返回404表示:

http://localhost:5000/api/board/

返回404
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/board/getall进行API操作

1 个答案:

答案 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()
    {
    }
}

在路径前面加上斜杠会覆盖控制器级路由属性。