[C#]Web API 2 后请求返回 null

标签: AngularJS C#
发布时间: 2017/2/24 2:49:22
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

问题是,当进入方法,"会议"是一个 null 值。正如你所看到的页眉和 JSON 对象是正确的。 你能告诉我我做错了吗?

我与角后的请求︰

        $scope.send = function () {
        var data = { "session": session };
        var req = {
            method: 'POST',
            data: data,
            headers: {'Content-Type': 'application/json'},
            url: '/api/myquiz/answers/'
        }

        $http(req).success(
            function () {
                quiz();
            });
    }

和 C# 代码︰

    [Route("answers")]
    [HttpPost]
    public IActionResult AnswerPost([FromBody] string session) {

       ...

    }

Chrome 控制台︰

Request URL:http://localhost:39634/api/myquiz/answers/
Request Headers
Provisional headers are shown
Accept:application/json, text/plain, */*
Content-Type:application/json
Origin:http://localhost:39634
Referer:http://localhost:39634/Team/Index
User-Agent:Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.93 Safari/537.36
Request Payload
{session: "92dfb7e432224702a553c98c294b29cf"}
session: "92dfb7e432224702a553c98c294b29cf"

解决方法 1:

您要发布到 WebApi 的对象︰

var data = { "session": session };

这你说你通过对它的会话属性的对象。你告诉您期望的 WebApi 方法虽然是一个字符串︰

public IActionResult AnswerPost([FromBody] string session)

不是一个对象。 我认为是否你对此更改您的代码︰

$scope.send = function () {
        //var data = { "session": session };
        var req = {
            method: 'POST',
            data: session,
            headers: {'Content-Type': 'application/json'},
            url: '/api/myquiz/answers/'
        }

        $http(req).success(
            function () {
                quiz();
            });
    }

它应该工作。希望这有助于。如果你打算将更多 params 传递给函数将来虽然,我将创建一个 C# 对象传递给控制器。喜欢这个:

public class AnswerPost
{
  public string Session {get; set;}
}

然后更新控制器的方法,看起来像这样︰

[Route("answers")]
    [HttpPost]
    public IActionResult AnswerPost([FromBody] AnswerPost answerpost) {
...
}
赞助商