【问题标题】:MVC Web API Post method with custom action name具有自定义操作名称的 MVC Web API Post 方法
【发布时间】:2018-09-21 05:11:27
【问题描述】:

我为所有进程编写了自定义操作名称。

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 推荐人政策:降级时不推荐人

如何使用自定义操作名称接收对 Web API 的发布请求?

【问题讨论】:

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


    【解决方案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; }
    }
    

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

    public class InvestmentController : ApiController {
    
        [HttpPost]
        public HttpResponseMessage Control([FromBody]ControlViewModel data) {
            //...
        }
    
        //...
    }
    

    参考Parameter Binding in ASP.NET Web API

    【讨论】:

      猜你喜欢
      • 2017-05-08
      • 1970-01-01
      • 1970-01-01
      • 2012-03-23
      • 2023-04-10
      • 1970-01-01
      • 2012-03-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多