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

时间:2017-03-15 20:56:47

标签: asp.net ajax asp.net-mvc asp.net-web-api asp.net-ajax

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

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

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

首先,你需要展示你的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"是我的Context类的对象。和#34; myClass"是我想要更新/保存数据的模态类。

你可以写" Json"返回类型代替" HttpResponseMessage"。 干杯...

答案 1 :(得分:0)

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

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

所以你的url就像下面一样接受一个带有布尔值的主体:

/api/person/123/availabletocall

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