当我更新现有数据时 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的主要内容,如果未能解决你的问题,请参考以下文章
如何通过本机反应将新字段数据更新到现有文档而不覆盖firebase-9中的现有数据
使用 Django Rest Framework 序列化程序更新现有模型