我想创建用于渲染视图的路由(Web路由)和用于管理目的的路由(API路由)。所以我创建了这样的目录结构:
controllers //root controller folder
ProductController
Api //subfolder of controllers folder
Productcontroller
我有同名的课程,这弄乱了我的路线。 “ api路由”与“网络路由”重叠。
这就是我定义api路由的方式
namespace Loja.Controllers.Api
[Produces("application/json")]
[Route("api/Produtos")]
public class ProdutosController : Controller
{
// GET: api/<controller>
[HttpGet]
public IEnumerable<string> Get()
{
return new string[] { "value1", "value2" };
}
}
这就是我定义网络路线的方式:
namespace Loja.Controllers
{
public class ProdutosController : Controller
{
[Route("/produtos/{slug}")]
public IActionResult Get(string slug)
当我尝试生成到我的网络路线的链接时,我被定向到api路线。为什么?
<a asp-controller="Produtos" asp-action="Get" asp-route-slug="@produto.Slug">
单击链接后,我将被定向到
http://localhost:5000/api/produtos?slug=assadeira-grande-40-x-27-cm-109dcc
答案 0 :(得分:0)
一种解决方案是使用区域并创建如下所示的超链接:
req.files
或者您可以手动创建a href;
<a asp-area="Public" asp-controller="Home" asp-action="About">Test</a>
答案 1 :(得分:0)
在如下所示的Web控制器中更改[ Route(“ / produtos / {slug}”)]
namespace Loja.Controllers
{
public class ProdutosController : Controller
{
[Route("/produtos/Get/{slug}")]
public IActionResult Get(string slug)