gpt4 book ai didi

c# - MVC 4 Web API 中的 URL 参数

转载 作者:太空狗 更新时间:2023-10-29 20:17:51 27 4
gpt4 key购买 nike

假设我在 MVC 4 Web API Controller 中有两种方法:

public IQueryable<A> Get() {}

public A Get(int id) {}

以及以下路线:

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

这按预期工作。再添加一个参数,例如:

public IQueryable<A> Get(int p) {}

public A Get(int id, int p) {}

导致MVC对以下请求返回404的情况:

GET /controller?p=100

或者

GET /controller/1?p=100

带有消息“在与请求匹配的 Controller ‘controller’上找不到任何操作”

我希望 URL 参数应该由 MVC 毫无问题地连接,但事实并非如此。这是错误还是我误解了 MVC 如何将请求映射到操作?

最佳答案

如果您考虑您正在尝试做什么以及您正在尝试的路线,您会意识到您的情况下的第二个参数“p”也需要标记为可选参数。

你的路由应该这样定义:

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

一旦你这样做了,URL

/ Controller ?p=100将映射到您的

public IQueryable<A> Get(int p) {}

方法和 URL 如下:

 /controller/1?p=100

将映射到你的

public A Get(int id, int p) {}

方法,如你所料。

所以回答你的问题....不,这不是错误,而是设计/预期的。

关于c# - MVC 4 Web API 中的 URL 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9943502/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com