代码之家  ›  专栏  ›  技术社区  ›  MorgoZ

使用url生成url。来自带有前缀的属性路由控制器的操作帮助器

  •  0
  • MorgoZ  · 技术社区  · 6 年前

    我已经定义了这样的地图路线:

    app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "default",
                    template: "{controller=User}/{action=Student}/{id?}");                   
            });
    

    [Route("api/User")]
    public class UserApiController : Controller
    {
        ....
        [HttpGet]
        [Route("Teacher")]
        public async Task<IEnumerable<UserApiVM>> GetTeachers()
        {
            ....
        }
     }
    

    http://api/User/Teacher ".

    现在我不想用@url生成那个url。动作助手或任何其他助手,但我不知道如何。我试过了

    @Url.Action("Teacher","UserApi")
    

    但它找不到控制器。

    顺便说一句,控制器位于名为“控制器”的文件夹中,API控制器位于“控制器”文件夹内名为“API”的文件夹中。

    1 回复  |  直到 6 年前
        1
  •  2
  •   Edward    6 年前

    产生 api/User/Teacher GetTeachers 作为控制器名称,而不是 Teacher .

    @Url.Action("GetTeachers", "UserApi")
    

    教师 ,您可以尝试设置路由名称,如下所示:

        [HttpGet]
        [Route("Teacher",Name = "Teacher")]
        public async Task<IEnumerable<string>> GetTeachers()
        {
            return null;
        }
    

    并通过以下方式生成URL:

    @Url.RouteUrl("Teacher")