【问题标题】:JSON array object passed from AngularJs , received as null in ASP.NET Web API controller从 AngularJs 传递的 JSON 数组对象,在 ASP.NET Web API 控制器中接收为 null
【发布时间】:2021-08-28 15:19:23
【问题描述】:

我正在尝试将一个 JSON 数组 (stuanswer) 从 AngularJs 发布到我的 ASP.NET Web api 控制器。但是我在控制器中将其设为 null (List<StuAnswerViewModel> answer)。 我确保浏览器调试,以检查 json 数组中是否有数据并且它有。 ID 列在数据库中自动递增,因此我没有传递值。即使我尝试从 json 传递 ID,仍然为空。

我无法理解缺少的内容。你能帮忙吗? 从网络选项卡获取的 JSON REQUEST 标头是

请求网址:http://localhost:1487/api/test/saveans 推荐人政策:strict-origin-when-cross-origin 接受:application/json、text/plain、/ 接受编码:gzip、deflate、br 接受语言:en-US,en;q=0.9 连接:保持活动 内容长度:937 内容类型:application/json;charset=UTF-8 Cookie:存储库=%7B%22loggedUser%22%3A%7B%22username%22%3A%22test%22%2C%22authdata%22%3A%22dW5kZWZpbmVkOnVuZGVmaW5lZA%3D%3D%22%2C%22Userid%22%3A1%2C %22中%22%3A%221%22%7D%7D 主机:本地主机:1487 来源:http://localhost:1487 参考:http://localhost:1487/ sec-ch-ua: "Chromium";v="92", "Not A;Brand";v="99", "Google Chrome";v="92" sec-ch-ua-mobile: ?0 Sec-Fetch-Dest:空 Sec-Fetch-Mode: cors Sec-Fetch-Site:同源 用户代理:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36 {0: {QuesID: 1, StudentId: 2, TestId: 1, GivenAnswer: 1, TestTakenDate: "01-01-01"},…} 0:{QuesID:1,StudentId:2,TestId:1,GivenAnswer:1,TestTakenDate:“01-01-01”} 1:{QuesID:1,StudentId:2,TestId:1,GivenAnswer:1,TestTakenDate:“01-01-01”} 2:{QuesID:1,StudentId:2,TestId:1,GivenAnswer:1,TestTakenDate:“01-01-01”} 3:{QuesID:1,StudentId:2,TestId:1,GivenAnswer:1,TestTakenDate:“01-01-01”} 4:{QuesID:1,StudentId:2,TestId:1,GivenAnswer:1,TestTakenDate:“01-01-01”} 5:{QuesID:1,StudentId:2,TestId:1,GivenAnswer:1,TestTakenDate:“01-01-01”} 6:{QuesID:1,StudentId:2,TestId:1,GivenAnswer:1,TestTakenDate:“01-01-01”} 7:{QuesID:1,StudentId:2,TestId:1,GivenAnswer:1,TestTakenDate:“01-01-01”} 8:{QuesID:1,StudentId:2,TestId:1,GivenAnswer:1,TestTakenDate:“01-01-01”} 9:{QuesID:1,StudentId:2,TestId:1,GivenAnswer:1,TestTakenDate:“01-01-01”} 10:{QuesID:1,StudentId:2,TestId:1,GivenAnswer:1,TestTakenDate:“01-01-01”} 从浏览器复制的请求头是

GET /Scripts/spa/Student/quesCtrl.js HTTP/1.1 主机:本地主机:1487 连接:保持活动 Pragma:无缓存 缓存控制:无缓存 sec-ch-ua: "Chromium";v="92", "Not A;Brand";v="99", "Google Chrome";v="92" sec-ch-ua-mobile: ?0 用户代理:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36 接受:/ Sec-Fetch-Site:同源 Sec-Fetch-Mode: no-cors Sec-Fetch-Dest:脚本 参考:http://localhost:1487/ 接受编码:gzip、deflate、br 接受语言:en-US,en;q=0.9

[HttpPost]
[Route("saveans")]
public HttpResponseMessage SaveAnswer(HttpRequestMessage request, [FromBody] List<StuAnswerViewModel> answer)
{
    return CreateHttpResponse(request, () =>
        {
            HttpResponseMessage response = null;
        }
}

public class StuAnswer
{
    public StuAnswer()
    {
        // Answers = new List<Answer>();
    }

    public int ID { get; set; }
    public DateTime TestTakenDate { get; set; }
    public int StudentId { get; set; }
    public int TestId { get; set; }
    public int QuesID { get; set; }
    public int GivenAnswer { get; set; }
}

function test()
{
    for (var i = 0; i < qLength; i++) 
    {
        $scope.stuanswer[i] = 
            {
                QuesID: 1,
                StudentId: 2,
                TestId:1,
                GivenAnswer: 1,
                TestTakenDate: '01-01-01'
            }               
     }

     apiService.post('/api/test/saveans', $scope.stuanswer,
            saveansSucceded,
            saveansFailed);
     }

【问题讨论】:

  • 你能做到以下几点吗?在浏览器中打开您的网站 - 在浏览器中按 F12 - 转到 network 选项卡 - 触发请求 - 选择请求 - 复制请求正文并将其粘贴到问题中。如果您知道如何使用 postman 或类似工具,请尝试发布 json 字符串,看看这是否也有问题?
  • 我已经包含了从浏览器 @Pieterjan 获取的请求标头
  • 抱歉,您发布了错误的请求。我们需要 saveansrequest body
  • 我已经发布了 json 请求,抱歉我没有格式化它
  • 好吧,看来 angularjs 将 stuanswer 作为对象而不是数组。

标签: angularjs webapi


【解决方案1】:

试试这个

public IActionResult SaveAnswer( [FromBody] List<StuAnswer> answer)
    {
       return Ok("sucess");
    }

【讨论】:

  • 这是 web api 控制器,因此我没有使用 ActionResult。希望有意义
  • @ArunVijai 试试让我知道结果
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-18
  • 1970-01-01
相关资源
最近更新 更多