繁体   English   中英

C#保存对象列表与保存对象(来自JSON)

[英]C# Saving Object List Vs Saving Object (From JSON)

我有以下工作代码:

类(声明的对象)

public class saveRow
{
    public int proId { get; set; }
    public string proName{get;set;}
}

控制器:

[HttpPost]
public virtual JsonResult SaveRow(saveRow input)
{ /* CODE HERE */}

JavaScript对象(已发送)

var test = {"proId" : 1, "proName" : "Test"}

JavaScript Ajax调用

 $.ajax({
       type: "POST",
       url: "URL",
       dataType: "json",
       data: test,
       traditional: true,
       success: function (data, status, request) {
           if (data.Error != undefined) {
               alert("System Error: " + data.Error);
               $(row).find('*').attr('disabled', false);
               return;
           }

       },
       error: function (request, status, error) {
           console.log("ERROR");
       }
   });

现在,当我想一次发送行列表而不是一次发送行列表时,便出现了问题,因此我执行了以下操作:

为了测试我拿了相同的对象并完成了

var test2 = []; test2.push(test); test2.push(test);

现在该对象看起来像:

[{"proId" : 1, "proName" : "Test"},{"proId" : 1, "proName" : "Test"}]

我的控制器现在看起来像:

  [HttpPost]
    public virtual JsonResult SaveRow(List<saveRow> input)
    { /* CODE HERE */}

在将对象列表作为JSON发送时,也IEnumberable ,可变输入始终为null。

但是每次我通过控制器参数“输入”发送此列表时,始终为空。

为什么是这样?

解决了-

public virtual JsonResult SaveRow(saveRow[] input)

并添加了内容类型! 使用JSON.stringify!

尝试这种方式:

  • 为您的列表设置一个包装器名称,使其与参数名称“ input”的包装器名称相同
  • 设置内容类型
  • 删除传统格式,然后使用JSON.stringify对数据进行字符串化。

JS:

var data = { "input": test2 };

$.ajax({
       type: "POST",
       url: "URL",
       dataType: "json",
       contentType:"application/json; charset=utf-8", //<--Set content Type
       data: JSON.stringify(data), //Set data
       success: function (data, status, request) {
           if (data.Error != undefined) {
               alert("System Error: " + data.Error);
               $(row).find('*').attr('disabled', false);
               return;
           }

       },
       error: function (request, status, error) {
           console.log("ERROR");
       }
   });

保存数组的问题<object>在后端 C# 列表中<object><div id="text_translate"><p>我有表格内的表格和网格外的其他字段的表格,并尝试将所有这些数据保存到 SQL 服务器数据库中,但是当我尝试 Axios 时没有连接到后端服务。 我认为问题在于 Array 与 List 的兼容性。 我不知道做事的正确方法。 打字稿 Model 是:</p><pre> import { RepairDetModel } from '../../models/repairDet/repairDetModel'; export class RepairMasterModel { public repairMasterId: number; public autoUserId: number; public year: string; public repairDetails: Array&lt;RepairDetModel&gt;; public isActive: boolean; }</pre><p> Axios 请求</p><pre>add(repairMaster: RepairMasterModel) { return axios({ url: `repairMaster/create`, method: 'post', headers: { "Content-Type": "application/json; charset=utf-8" }, data: JSON.stringify(repairMaster) }).then(res =&gt; res.data.data).catch(error =&gt; Promise.reject(HelperFunctions.getErrorMessage(error)) ) }</pre><p> 和后端服务</p><pre>public int Create(RepairMasterDTO repairDTO) { try { if (string.IsNullOrEmpty(repairDTO.Year)) throw new BusinessValidationException(ErrorCodes.REPAIRMASTER_YEAR_MISSING); var repairEntity = new RepairMasterEntity() { AutoUserId = repairDTO.AutoUserId, Year = repairDTO.Year, IsActive = repairDTO.IsActive, UpdatedOn = DateTime.Now, }; int repairId = DataAccessService.RepairMasterRepository.Create(repairEntity); DataAccessService.Commit(); return repairId; } catch (Exception ex) { throw ex; } }</pre><p> 维修MasterDTO class</p><pre> public class RepairMasterDTO { public int RepairMasterId { get; set; } public string Year { get; set; } public int AutoUserId { get; set; } public List&lt;RepairDetDTO&gt; RepairDetails { get; set; } public bool IsActive { get; set; } }</pre></div></object></object>

[英]Problem saving array<object> in backend C# list<object>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 将JSON数据保存到C#自定义对象中 将json数组保存到c#类对象 C#从NodeList xml保存对象 将 object 列表保存为 UWP 中的 JSON 保存数组的问题<object>在后端 C# 列表中<object><div id="text_translate"><p>我有表格内的表格和网格外的其他字段的表格,并尝试将所有这些数据保存到 SQL 服务器数据库中,但是当我尝试 Axios 时没有连接到后端服务。 我认为问题在于 Array 与 List 的兼容性。 我不知道做事的正确方法。 打字稿 Model 是:</p><pre> import { RepairDetModel } from '../../models/repairDet/repairDetModel'; export class RepairMasterModel { public repairMasterId: number; public autoUserId: number; public year: string; public repairDetails: Array&lt;RepairDetModel&gt;; public isActive: boolean; }</pre><p> Axios 请求</p><pre>add(repairMaster: RepairMasterModel) { return axios({ url: `repairMaster/create`, method: 'post', headers: { "Content-Type": "application/json; charset=utf-8" }, data: JSON.stringify(repairMaster) }).then(res =&gt; res.data.data).catch(error =&gt; Promise.reject(HelperFunctions.getErrorMessage(error)) ) }</pre><p> 和后端服务</p><pre>public int Create(RepairMasterDTO repairDTO) { try { if (string.IsNullOrEmpty(repairDTO.Year)) throw new BusinessValidationException(ErrorCodes.REPAIRMASTER_YEAR_MISSING); var repairEntity = new RepairMasterEntity() { AutoUserId = repairDTO.AutoUserId, Year = repairDTO.Year, IsActive = repairDTO.IsActive, UpdatedOn = DateTime.Now, }; int repairId = DataAccessService.RepairMasterRepository.Create(repairEntity); DataAccessService.Commit(); return repairId; } catch (Exception ex) { throw ex; } }</pre><p> 维修MasterDTO class</p><pre> public class RepairMasterDTO { public int RepairMasterId { get; set; } public string Year { get; set; } public int AutoUserId { get; set; } public List&lt;RepairDetDTO&gt; RepairDetails { get; set; } public bool IsActive { get; set; } }</pre></div></object></object> 将对象保存到数据库C# C#保存到动态对象 C#保存对象值 如何保存列表 <object> 到C#uwp中的设置 C#-OutOfMemoryException将列表保存在JSON文件中
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM