knockout.js 如何将JavaScript数组发送到.net core 3. 1应用程序中的控制器?

c9qzyr3d  于 2022-11-10  发布在  Java
关注(0)|答案(1)|浏览(112)

JavaScript方面的内容如下所示:

  1. var self = this;
  2. self.services = ko.observableArray([]);
  3. self.saveServices = function () {
  4. if (self.services().length > 0) {
  5. var obj = JSON.stringify({ services: self.services() });
  6. $.ajax({
  7. contentType: 'application/json; charset=utf-8',
  8. dataType: 'json',
  9. type: "POST",
  10. url: '/Business/SaveServices',
  11. data: obj,
  12. success: function (data) {
  13. $("#saveModal").modal('show');
  14. if (!data) {
  15. $("#saveDetails").text('Processing error, please try again or email us.');
  16. return;
  17. } else if (data === "saved") {
  18. $("#saveDetails").text('Saved changes.');
  19. setTimeout(function () {
  20. $('#saveModal').modal('hide');
  21. }, 2500);
  22. } else {
  23. $("#saveDetails").text(data);
  24. }
  25. },
  26. error: function (error) {
  27. $("#saveModal").modal('show');
  28. $("#saveDetails").text('Processing error, please try again or email us.');
  29. }
  30. });
  31. }
  32. }

然后我的控制器看起来像这样:

  1. [HttpPost]
  2. public async Task<JsonResult> SaveServices([FromBody]SaveServicesRequest saveServicesRequest)
  3. {
  4. try
  5. {
  6. if (User.Identity.IsAuthenticated)
  7. {
  8. return Json("saved");
  9. }
  10. return Json("User is not authenticated.");
  11. }
  12. catch (Exception ex)
  13. {
  14. logger.Error(ex + ". Users Email address: " + User.Identity.Name);
  15. return Json("Processing error, please try again or email us.");
  16. }
  17. }
  18. public class SaveServicesRequest
  19. {
  20. public List<services> services { get; } = new List<services>();
  21. }
  22. public class services
  23. {
  24. public string service { get; set; }
  25. }

我点击了控制器,但是我期望的项目数组没有返回(saveServicesRequest是空的),我似乎不能以任何形式传递数组。有人看到我做错了什么吗?数据/json正在发送到客户端,认为问题可能在于我如何构建json和接收它。

kfgdxczn

kfgdxczn1#

问题在于,您正在将services初始化为SaveServicesRequest中的一个新列表。
请尝试将您的类更新为:

  1. public class SaveServicesRequest
  2. {
  3. public List<services> services { get; set; }
  4. }

相关问题