【问题标题】:URL with QueryString not hitting MVC Controller method带有 QueryString 的 URL 未命中 MVC 控制器方法
【发布时间】:2018-09-12 14:08:02
【问题描述】:

我在控制器中有两种方法。一个接受参数,另一个不接受。

[Produces("application/json")]
[Route("api/[controller]")]
public class ClientController : Controller
{
    [HttpGet("[action]/{id}")]
    public ObjectResult GetChildNodeObjects(string id)
    {
        //does stuff
    }

    [HttpGet("[action]")]
    public ObjectResult GetChildNodeObjects()
    {
        //does other stuff
    }
}

现在的问题是第一个问题,即接受参数的问题。 当我用http://localhost:xxxx/api/project/GetChildNodeObjects/231a 击中它时,它会很好地获取参数。但由于我得到这样的 URL:http://localhost:xxxx/api/project/GetChildNodeObjects/?id=231a 它直接进入另一个控制器方法 - 没有参数的那个。在第二种情况下不捕获参数我做错了什么?

【问题讨论】:

标签: javascript asp.net-web-api query-string


【解决方案1】:

你已经加入了一个斜线。这个斜线意味着无参数的动作开始了。所以只需替换 URL:

http://localhost:xxxx/api/project/GetChildNodeObjects/?id=231a 

http://localhost:xxxx/api/project/GetChildNodeObjects?id=231a 

【讨论】:

  • 你有自定义路由图还是 MVC 默认的?
【解决方案2】:

您应该在 url 映射中定义如下所示的内容

routes.MapRoute(
    "myrouting",
    "mycontroller/myaction/",
    new { }
    );

【讨论】:

  • 在定义路由的地方,可以使用'routes.MapMvcAttributeRoutes();'启用属性路由
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-31
  • 2012-12-30
  • 2018-06-25
  • 2021-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多