我已经定义了这样的地图路线:
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=User}/{action=Student}/{id?}");
});
并且我有一个具有属性路由的API动作,如下所示:
[Route("api/User")]
public class UserApiController : Controller
{
....
[HttpGet]
[Route("Teacher")]
public async Task<IEnumerable<UserApiVM>> GetTeachers()
{
....
}
}
我可以访问浏览到诸如“ http://api/User/Teacher”之类的直接网址。
现在,我想使用@ URL.Action帮助程序或任何其他帮助程序生成该url,但我不知道如何操作。我尝试过
@Url.Action("Teacher","UserApi")
但是找不到控制器。
顺便说一句,控制器是Controllers在“ Controllers”文件夹中,API controllers在“ Controllers”文件夹中名为“ API”的文件夹中。
谢谢!
答案 0 :(得分:1)
要生成api/User/Teacher
,您需要指定GetTeachers
作为控制器名称,而不是Teacher
。
@Url.Action("GetTeachers", "UserApi")
如果您想通过指定Teacher
来生成URL,则可以尝试如下设置路由名称:
[HttpGet]
[Route("Teacher",Name = "Teacher")]
public async Task<IEnumerable<string>> GetTeachers()
{
return null;
}
并通过以下方式生成URL:
@Url.RouteUrl("Teacher")