[英]Flattening a complex json object for mvc binding
我的控制器正在以json格式將對象圖返回到視圖,如下所示
return Json(customer);
在視圖上,我的json對象看起來像這樣
{
Name: 'Joe',
Budget: { Amount: 500, Spend: 100 }
}
哪個正確映射到我的客戶對象:
public class Customer
{
public string Name {get;set;}
public Budget Budget{get;set;}
}
public class Budget
{
public decimal Amount{get;set;}
public decimal Spend{get;set;}
}
我想使用該簽名將相同的json對象傳遞回控制器上的另一個方法:
public ActionResult Method(Customer customer)
當我執行此操作時,將填充客戶的名稱,而不填充Budget類,這是我理解的原因,因為Modelbinder期望這樣做:{Name:'Joe','Budget.Amount':500,'Budget.Spend':100}
因此,我必須選擇:1.我可以以所需的格式返回json對象,但我不知道如何,因為您不能這樣做:
return Json(new { Budget.Amount= 500})
這是一個將對象轉換為平面哈希的函數
function flatten(json){
var nj = {},
walk = function(j){
var jp;
for(var prop in j){
jp = j[prop];
if(jp.toString() === "[object Object]"){
walk(jp);
}else{
nj[prop] = jp;
}
}
};
walk(json);
return nj;
}
就我而言,我們通過將其他對象傳遞給操作網址來解決了該問題。
public ActionResult方法(客戶客戶,[Bind(Prefix =“ Budget”)]預算預算)
為了做到這一點,您必須按照以下方式展平json數據(在將其發送到控制器之前):
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.