MVC使用相同的参数调用不同的方法

时间:2015-03-23 12:35:53

标签: c# web-services model-view-controller

我有一个控制器有2个方法具有相同的参数但是如果我调用它我得到一个错误

Several actions that matched the request were found:

我认为我必须更改Map路由才能完成,但我不知道该怎么做

我的方法:

 public IHttpActionResult RecuperarMenu(short idInstalacion,string secretKey)

public IHttpActionResult RecuperarClasesColectivas(short idInstalacion, string secretKey)

我的路线图

    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
        name: "Default",
        url: "{controller}/{action}/{id}",
        defaults: new
        {
            controller = "Home",
            action = "Index",
            id = UrlParameter.Optional,
            namespaces = new[] { "WebServicesRestAPI.Controllers" }
        }
        );

        //routes.MapRoute(
        //    name: "Default",
        //    url: "{controller}/{action}/{id}",
        //    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        //);
    }

1 个答案:

答案 0 :(得分:0)

我想包含你的方法的控制器是一个WebAPI控制器(它来自 ApiController 类)。正确的吗?

因此,作为WebAPI控制器:

  1. 它不是通过MapRoute方法配置的,而是通过HttpConfiguration.Routes。 MapHttpRoute 方法配置的(默认情况下,它在〜/ App_Start / WebApiConfig.cs中配置)文件):

        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
    
  2. 控制器中的名称应遵循GET / POST / PUT / DELETE模式(或者应由您明确映射)。

  3. 如果你的方法对应于GET操作,它们应该有不同的参数(如果你的方法你有相同的参数)。