简体   繁体   English

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

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

I have the following WORKING code: 我有以下工作代码:

Class (Declared Objects) 类(声明的对象)

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

Controller: 控制器:

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

JavaScript Object (Been sent) JavaScript对象(已发送)

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

JavaScript Ajax Call 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");
       }
   });

Now the problem occurs when I want to send a list of my rows rather than one at a time so i done the following: 现在,当我想一次发送行列表而不是一次发送行列表时,便出现了问题,因此我执行了以下操作:

To test i took the same object and done 为了测试我拿了相同的对象并完成了

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

And the object now looks like: 现在该对象看起来像:

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

My controller now looks like : 我的控制器现在看起来像:

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

Also tryed IEnumberable when sending the list of objects as JSON the varible input is always null. 在将对象列表作为JSON发送时,也IEnumberable ,可变输入始终为null。

But every time i send this list through the controller parameter "input" is always null. 但是每次我通过控制器参数“输入”发送此列表时,始终为空。

Why is this? 为什么是这样?

SOLVED- 解决了-

public virtual JsonResult SaveRow(saveRow[] input)

And added content type! 并添加了内容类型! With JSON.stringify! 使用JSON.stringify!

Try this way: 尝试这种方式:

  • Set a wrapper name for your list same as that of your argument name "input" 为您的列表设置一个包装器名称,使其与参数名称“ input”的包装器名称相同
  • Set content-type 设置内容类型
  • Remove traditional and use JSON.stringify to stringify your data. 删除传统格式,然后使用JSON.stringify对数据进行字符串化。

JS: 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#自定义对象中 - Saving JSON data into a C# custom object 将json数组保存到c#类对象 - Saving json array to c# class object C#从NodeList xml保存对象 - C# saving object from NodeList xml 将 object 列表保存为 UWP 中的 JSON - Saving an object list as JSON in UWP 保存数组的问题<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> 将对象保存到数据库C# - saving object to database c# C#保存到动态对象 - C# saving to a dynamic object C#保存对象值 - C# Saving Object Values 如何保存列表 <object> 到C#uwp中的设置 - how saving List<object> to settings in C# uwp C#-OutOfMemoryException将列表保存在JSON文件中 - C# - OutOfMemoryException saving a List on a JSON file
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM