具有自定义操作名称的MVC Web API Post方法

时间:2018-04-11 10:43:09

标签: c# asp.net-web-api asp.net-web-api-routing

我为自己的流程编写了自定义动作名称。

config.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{action}/{id}",
    defaults: new { id = RouteParameter.Optional }
); 

在webapi配置中,我这样编写并在控制器中,我开始如下

[System.Web.Http.HttpPost]
public HttpResponseMessage Control(List<string>codes,string updateperson,string refPeriod, int actualyear, int actualmonth)
{

对于get方法,一切都运行良好,但对于post方法,它不起作用并给出如下错误。

在帖子中我发送

{codes: ["CPM2018-004"], updateperson: "E3852", refPeriod: "SFC18", actualyear: 2018, actualmonth: 12}
  

请求网址:http://localhost:50941/Api/Investment/Control请求   方法:POST状态码:404未找到远程地址:[:: 1]:50941   推荐人政策:no-referrer-when-downgrade

如何使用自定义操作名称将请求发送到Web API?

1 个答案:

答案 0 :(得分:1)

创建模型以保存已发布的值。

public class ControlViewModel {
    public List<string> codes { get; set; }
    public string updateperson { get; set; }
    public string refPeriod { get; set; }
    public int actualyear { get; set; }
    public int actualmonth { get; set; }
}

然后更新操作以期望请求的BODY中的数据

public class InvestmentController : ApiController {

    [HttpPost]
    public HttpResponseMessage Control([FromBody]ControlViewModel data) {
        //...
    }

    //...
}

参考Parameter Binding in ASP.NET Web API