当我更新现有数据时 System.Reflection.TargetException ERROR

Posted

技术标签:

【中文标题】当我更新现有数据时 System.Reflection.TargetException ERROR【英文标题】:When i Update my existing data System.Reflection.TargetException ERROR 【发布时间】:2020-07-27 03:49:30 【问题描述】:

我正在使用 web api 使用 angularjs ajax 从数据库中插入更新读取删除数据,但是当我更新我的数据时出现错误。

我用于更新的 WEB API 代码:

    [Route("api/UpdateAdmin")]
    [HttpPost]
    public bool UpdateAdmin(Admin admin)
    
        using (FirstdbEntities ent = new FirstdbEntities())
        
            Admin updatedAdmin = (from c in ent.Admins where c.Name == admin.Name select 
 c).FirstOrDefault();   //here i get the error System.Reflection.TargetException.
            updatedAdmin.City = admin.City;
            updatedAdmin.Role = admin.Role;
            ent.SaveChanges();
        
        return true;
    

单击按钮时实现的我的 angularjs 代码:

   $scope.Update = function (x) 
            var admin = $scope.adminlist[x];
            var httprequest = $http(
                method: 'POST',
                url: "api/UpdateAdmin/",
                data: JSON.stringify(admin),
                dataType: 'json',
                headers:  "Content-Type": "application/json" 
            )
            .then(function (data) 
                alert('Data Updated successfully.');
                $scope.adminlist.push(data.data);
            );
        

我的按钮:

<input type="button" class="bg-danger" value="Update" ng-click="Update(ax)" />

请告诉我该怎么做。谢谢!

【问题讨论】:

【参考方案1】:

您似乎无法将admin 参数正确发送到服务器。因此,admin 参数在您的 UpdateAdmin 方法中始终为空。您需要更改JSON.stringify 的用法。

所以这个

 data: JSON.stringify(admin)

在 AJAX 调用中应该如下:

data: JSON.stringify(admin: admin)

这与问题无关,但我也会添加空检查:

using (FirstdbEntities ent = new FirstdbEntities())

    Admin updatedAdmin = ent.Admins.FirstOrDefault(i=> i.Name == admin.Name);
    if(updatedAdmin != null)
    
        updatedAdmin.City = admin.City;
        updatedAdmin.Role = admin.Role;
        ent.SaveChanges();
    

return true;

【讨论】:

更改代码后会出现另一个错误:Web-api 中的System.NullReferenceException 能否请您将调试器放在UpdateAdmin 方法的入口并检查admin 是否为空。 所以你的问题是var admin = $scope.adminlist[x];,确保你有管理员数据。

以上是关于当我更新现有数据时 System.Reflection.TargetException ERROR的主要内容,如果未能解决你的问题,请参考以下文章

为啥在更新现有实体时会出现重复的实体?

Boto3 S3 更新现有对象的元数据

如何通过本机反应将新字段数据更新到现有文档而不覆盖firebase-9中的现有数据

使用 Django Rest Framework 序列化程序更新现有模型

更新 SQL Server 数据库时如何更新 MS Access 表单?

不使用 @CachePut 更新缓存