2017-03-15 47 views
0

我有一個數據表,每行有一個按鈕。點擊後,它應該在我的課程中設置一個屬性(字段AvailableToCall)。所以我爲我的更新方法API調用一個Ajax傳遞屬性的值(true)。問題是,當我這樣做時,所有其他屬性(例如,名稱,地址等)都設置爲空。有沒有一種方法可以只更新一個特定的屬性,使我的表的所有其他屬性與AJAX調用之前相同?ASP .NET Ajax如何只更新一些屬性?

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

感謝您的幫助。

+0

你還沒有顯示你的控制器方法! (你從基於'personId'的數據庫中獲得對象並更新它的'AvailableToCall'屬性,然後保存它。 –

回答

0

另一種方式,你可以做到這一點是不同的端點:

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

所以您的網址是一樣的東西,低於該接受體用布爾:

/api/person/123/availabletocall

您的控制器操作可以簡單地接收該單個值並更新您使用的任何數據源。

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」是我的上下文類的對象。而「myClass」是我想要更新/保存數據的模態類。

你可以寫「Json」返回類型來代替「HttpResponseMessage」。 乾杯......