我從JavaScript客戶端返回的數據只包含已更改的數據。也就是說,我可能有一個數組,每行包含10個JSON下載列,但在Update上,只有返回給我的數據是更新的數據。在我的更新中,我只想更新那些已更改的列(不是全部)。從ASP.NET MVC3控制器中選出剛返回的JSON數據更新
換句話說,我的代碼如下所示,但是因爲我傳入了「總統」類的實例,所以我無法知道原始JSON實際發生了什麼。
我該如何更新MVC3更新方法而不是所有列。也就是說,8個列可能不會進入,並且在傳入的「data」參數中將爲null。我不想因此刪除所有數據。
[HttpPost]
public JsonResult Update(President data)
{
bool success = false;
string message = "no record found";
if (data != null && data.Id > 0)
{
using (var db = new USPresidentsDb())
{
var rec = db.Presidents.FirstOrDefault(a => a.Id == data.Id);
rec.FirstName = data.FirstName;
db.SaveChanges();
success = true;
message = "Update method called successfully";
}
}
return Json(new
{
data,
success,
message
});
}
嗨Maess,這正是我不想做的。它會在FirstName中刪除我的真實數據。 FirstName未在JSON中返回,「data.FirstName」中的值將爲空。也就是說,FirstName並沒有改變,所以它沒有被推送爲JSON.Comments的長度至少爲15個字符(點擊這個框來解散)......堅持,讓我想想這個。 –
你正在從數據源中選擇rec(至少我假設db是你的上下文),因此,它應該加載'FirstName'的當前值,上面的語句會將'FirstName'設置爲其當前值(如果是數據)。 FirstName爲空。 – Maess
嗨Maess,兩個問題。首先,我希望有一個更通用的方法來處理這個問題,所以我不必在每個控制器的每一列都寫明代碼。其次,上述方法僅適用於可爲空的列。例如,我有非空的布爾列,這種方法不適用於。我不知道會返回什麼,但我猜布爾值的默認值將被返回。 –