c# MVC中的两个GET函数

本文关键字:两个 GET 函数 MVC | 更新日期: 2023-09-27 18:09:45

public IEnumerable<Employee> GetEmployees()
{
    //code and return
}
public Employee GetSingleEmployee(int Id)
{
    //code and return 
}

这是我现在拥有的。我试图使应用程序调用第一个函数与获取调用api/雇员和第二个与获取调用api/雇员/(ID号)例如api/雇员/75。get调用总是指向第一个。怎么解呢?

这是我的路由:

 namespace EmployeeApp
 {
    public class RouteConfig
    {
          public static void RegisterRoutes(RouteCollection routes)
          {
                    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
                    routes.MapRoute(
                        name: "Default",
                        url: "{controller}/{action}/{id}",
                        defaults: new { action = "Index", id=UrlParameter.Optional }
                    );
           }
     }
 }

c# MVC中的两个GET函数

使用类似

的注释
[HttpGet]
[Route("employee")]
public IEnumerable<Employee> GetEmployees()
{
    //code and return
}
[HttpGet]
[Route("employee/{Id}")]
public Employee GetSingleEmployee(int Id)
{
    //code and return 
}

在你上面的类RoutePrefix到

[RoutePrefix("api")]

正如其他人在没有看到路由的情况下所说的那样,可能很难猜测,但假设它是这样的:

routes.MapHttpRoute(
    name: "API Default",
    routeTemplate: "api/{controller}/{id}",
    defaults: new { id = RouteParameter.Optional }
);

只要方法参数是小写的,可选的id参数就可以工作。

如果你想使用这个动作作为路由的一部分,那么使用this,把它放在默认路由的上面:

routes.MapHttpRoute(
    name: "Api By Action",
    routeTemplate: "api/{controller}/{action}/{id}",
    defaults: new { id = RouteParameter.Optional }
);