IActionResult参数未被传递

问题描述 投票:2回答:1

我正在发布以下请求

http://somesite.ngrok.io/nexmo?to=61295543680&from=68889004478&conversation_uuid=CON-btt4eba4-dbc3-4019-a978-ef3b230e923a&uuid=2ddh8172jbc252e02fa0e99445811fdc

我的ASP.NET核心应用程序中的动作控制器方法是:

[HttpPost]
public IActionResult Index(string uuid)
{
    string s = uuid;
    return View();
}

return线设置断点时,为什么s = null?它应该等于2ddh8172jbc252e02fa0e99445811fdc

UPDATE

添加[FromQuery]似乎不起作用。我联系了API团队,他们回复我说这是他们发布到我的网址的信息:

"HTTP-METHOD=POST"
"HTTP-RESP=callback response is ignored"
"CONVERSATION-ID=CON-81593cc2-cba0-49e7-8283-f08813e1a98e"
"HTTP-REQ={from=61400104478, to=61290567680, uuid=8a4079c012c1bfa23f6dff8485e27d00, conversation_uuid=CON-81593cc2-cba0-49e7-8283-f08813e1a98e, status=started, direction=inbound, timestamp=2018-08-31T15:05:02.729Z}"

这些信息有什么帮助吗?也许我必须对某些东西进行反序列化?我不会这么想,但我不明白为什么我没有检索uuid值,我可以看到请求实际上已经让我的控制器动作...

c# asp.net-core asp.net-core-mvc parameter-passing ngrok
1个回答
3
投票

因为您没有告诉操作期望查询字符串中的参数

[FromHeader][FromQuery][FromRoute][FromForm]:使用这些来指定要应用的确切绑定源。

创建一个模型来保存值

public class Model {
    public string uuid { get; set; }

    //...other properties
}

并更新操作以使用[FromQuery]根据查询字符串中提供的键值绑定模型

[HttpPost]
public IActionResult Index([FromQuery]Model model) {
    if(ModelState.IsValid) {
        var uuid = model.uuid;
        string s = uuid;
        return View();
    }
    return BadRequest();
}

理想情况下,对于POST请求,您应该利用请求BODY来处理更复杂的类型,因为查询字符串比请求正文更有限。

参考Model Binding in ASP.NET Core

© www.soinside.com 2019 - 2024. All rights reserved.