ASP .NET API Ajax 如何只更新一些属性?

ASP .NET API Ajax How to update only some properties?

我有一个数据table,每一行都有一个按钮。单击时,它应该在我的 class 中设置一个 属性(字段 AvailableToCall)。因此,我为更新方法 API 调用 Ajax,为 属性 传递值 (true)。问题是,当我这样做时,所有其他属性(例如,名称、地址等)都设置为空。有没有一种方法可以只更新特定的 属性,而使 table 的所有其他属性与调用 AJAX 之前相同?

$.ajax({
    url: "/api/person/" + personId,
    type: "put",
    data: {
        AvailableToCall: true
    }
}).done(function () {
    // something
}

感谢您的帮助。

首先你需要展示你的 ApiController 方法。

我假设你的方法是这样的,

public HttpResponseMessage Put(int id)
 {
  var _AvailableToCall = HttpContext.Current.Request.Form["AvailableToCall"];
  //I'm using HttpContext to fetch the data in the above line. You can fetch  
  //the bool value as your way
  //Now you just need to fetch the data by personId, (here it is id).
  myClass obj = contextObj.myClass().where(m=>m.personId == 
                id).firstOrDefault();
  obj.AvailableToCall = true;
  //That's it. Now you can update it.
  contextObj.Entry(obj).State = System.Data.Entity.EntityState.Modified;
  contextObj.SaveChanges();
  return Request.CreateResponse(HttpStatusCode.OK, new { Status = "OK", 
         Message = e.ToString() });
  //You can return your data as your requirements or as you are writing in 
  //your project.
  } 

看到这里"contextObj"是我的ContextClass的对象。 "myClass" 是我想要 update/save 数据的模态 class。

您可以写 "Json" return 类型代替 "HttpResponseMessage"。 干杯...

实现此目的的另一种方法是使用不同的端点:

$.ajax({
    url: "/api/person/" + personId + "/availabletocall",
    type: "put",
    data: true
}).done(function () {
    // something
}

所以您的 url 类似于下面的内容,它接受带有布尔值的主体:

/api/person/123/availabletocall

您的控制器操作可以简单地接收该单个值并更新您正在使用的任何数据源。