Web api 路由两个控制器类似的操作和参数未在一个操作中填充参数值
本文关键字:参数 操作 填充 一个 路由 api 两个 控制器 Web | 更新日期: 2023-09-27 18:36:01
我有两个webapi控制器控制器A和控制器B。每个都有一个开机自检操作,即
控制器A
[HttpPost]
public HttpResponseMessage Action1(CustomObjectA req, string pan="")
控制器B
[HttpPost]
public HttpResponseMessage Action2(CustomObjectB req, string mpxn="")
我的 Web API 路由如下所示
config.Routes.MapHttpRoute(
name: "Purchase",
routeTemplate: "{controller}/{pan}",
defaults: new
{
controller = "ControllerA"
pan = RouteParameter.Optional
});
config.Routes.MapHttpRoute(
name: "Vend",
routeTemplate: "{controller}/{mpxn}",
defaults: new
{
controller = "ControllerB",
mpxn = RouteParameter.Optional
});
当我调用从小提琴手到/ControllerA/1 的 POST 请求时,它工作正常,即 Action1 中平移参数的值设置为 1但是当我调用来自提琴手到/ControllerB/2 的 POST 请求时,它来到了 Action2,但 mpxn 的值没有设置,它是"。谁能纠正我在路由中犯的错误?
谢谢
希望这些链接对您有所帮助: 属性路由-1 属性路由-2
通过属性路由,可以更好地控制 Web API 中的 URI。例如,您可以轻松创建描述资源层次结构的 URI。
早期的路由样式(称为基于约定的路由)仍完全受支持。实际上,您可以在同一项目中结合使用这两种技术。