【问题标题】:How to add list of data to database from ASP.NET (Task<IHttpActionResult> list)如何从 ASP.NET 将数据列表添加到数据库(任务<IHttpActionResult> 列表)
【发布时间】:2021-06-01 06:55:18
【问题描述】:

您好,我对 ASP.NET 非常陌生,我想使用 post 从 java 脚本中发布数据列表,并将数据传递给控制器​​,以便将数据保存在数据库中。 目前我卡在控制器部分,任何人都可以指导控制器部分。我将提供我到目前为止开发的代码

JAVASCRIPT 部分

function UpdateData() {

    var things = [
        { ID: 1, QUANTITY: 1, CODE: 1, DESCRIPTION: 'ONE'},
        { ID: 2, QUANTITY: 2, CODE: 2, DESCRIPTION: 'ONE'},
        { ID: 3, QUANTITY: 3, CODE: 3, DESCRIPTION: 'THREE'}
    ];      

    things = JSON.stringify({ 'things': things });

    return ajaxPromise({
        url: UpdateUrl,
        type: "POST",
        contentType: "application/json",
        data: things
    }).then(function (result) {

    }, function (e) {
        console.error(e);
        alert(e.responseText);
      
    });
}

DTO

public class DataDTO
{
    public int ID{ get; set; }

    public int QUANTITY{ get; set;}

    public int CODE{ get; set; }

    public string DESCRIPTION{ get; set; }

}

控制器部分

[HttpPost] 

public async Task<IHttpActionResult> UpdateData(List<DataDTO> data){

 var results = new List<DataDTO>();
       
 foreach (var item in results)
        {
            var newRecords = new newData();
            newRecords.ID= item.ID;
            newRecords.QUANTITY= item.QUANTITY;
            newRecords.CODE= item.CODE;               
            newRecords.DESCRIPTION= item.DESCRIPTION;
            
            db.newData.Add(newRecords);
        }           

        await db.SaveChangesAsync();
        return Ok("Save successfully");  }

【问题讨论】:

  • 您似乎在控制器 UpdateData(List&lt;DataDTO&gt; data) 中循环了一个空列表。参数data 应该被foreach 循环。而不是results
  • 嗨,现在我能够将数据从 javascript 传递到我的控制器,并且能够通过 for each 函数,但是现在只要它运行时就会出现问题 await db.SaveChangesAsync();或 db.SaveChanges();在每个循环中它不断向我抛出异常错误

标签: asp.net-mvc database http-post dto


【解决方案1】:

虽然您在 javascript 部分将数据命名为“事物”,所以您应该在控制器部分将其称为“事物”,然后在“事物”上运行 foreach。

[HttpPost] 

public async Task<IHttpActionResult> UpdateData(List<DataDTO> things){
   
foreach (var item in things)
    {
        var newRecords = new newData();
        newRecords.ID= item.ID;
        newRecords.QUANTITY= item.QUANTITY;
        newRecords.CODE= item.CODE;               
        newRecords.DESCRIPTION= item.DESCRIPTION;
        
        db.newData.Add(newRecords);
    }           

    await db.SaveChangesAsync();
    return JavaScript("alert('It Was Done OK')");
    }

【讨论】:

  • 嗨 @Mahdi 现在我可以将数据从 javascript 传递到我的控制器并且能够通过 for each 函数但是现在只要它运行就会出现问题 await db.SaveChangesAsync();或 db.SaveChanges();在每个循环中它不断向我抛出异常错误
  • 可能是因为将 DTO 转换为实体,请附上您的实体。给我检查一下
【解决方案2】:

嗨@Mahdi,我遇到了几乎相同的情况,但是每当我传递事物数据时 在

public async Task<IHttpActionResult> UpdateData(List<DataDTO> things){

数据作为 null 传递我不知道为什么数据无法传递给控制器​​,但我一直在尝试使用 JObject Model 现在我可以看到数据但我不知道如何使用JObject Model传递数据列表添加到数据库

【讨论】:

    【解决方案3】:

    其实我觉得你应该改一下这段代码

    public async Task<IHttpActionResult> UpdateData(List<DataDTO> things){
    

    到这个代码

    public async Task<ActionResult> UpdateData(IEnumerable<DataDTO> things)
    

    请确保您在“事物”上运行 foreach,我认为您在 foreach 循环中使用了一些空列表,请检查您的 foreach 是否如下:

    foreach (var item in things)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-22
      • 2019-03-06
      • 1970-01-01
      • 2022-01-05
      • 1970-01-01
      • 1970-01-01
      • 2023-01-02
      相关资源
      最近更新 更多