2015-06-29 16 views
3

我已經將JSON響應反序列化爲一個對象。什麼是下一個步驟?我有一個WebAPI控制器,我目前正在使用我的JSON對象。我需要將這些數據移動到視圖中,以便將其連接到我的Web組件。如何使用C#將我的模型導入到我的視圖中?

我想我很困惑,如果我應該通過控制器或視圖中的JSON對象迭代?我有以下幾點:

var model = JsonConvert.DeserializeObject<MyData.RootObject>(Data); 
foreach (var record in Data.rows) 
{ 
    foreach (var nestedRecord in record.f) 
    { 
     List<string> list = new List<string>(); 
     list.Add(nestedRecord.v);   
    } 
} 
return View(); 

另外,我迭代通過這種模式,我不能在視圖返回模型,因爲它的範圍之外。

+0

你nestedRecord的'名單.v'字符串是你想要的視圖模型嗎? –

+0

對於初學者,將模型添加到您的視圖。返回View(viewmodel); –

回答

3

我在這裏看到兩個受歡迎的選項,具體取決於您可能從反序列化對象訪問多少信息。一,使用MyData.RootObject作爲你的模型,並在視圖中迭代它。如果您需要訪問該對象的其他屬性,就會給你最大的靈活性:

var model = JsonConvert.DeserializeObject<MyData.RootObject>(Data); 
return View(model); 

在視圖(這個無序列表標記只是一個示例),你可能有:

@model MyData.RootObject 

<ul> 
@foreach (var record in Model.rows) 
{ 
    foreach (var nestedRecord in record.f) 
    { 
     <li>@nestedRecord.v</li> 
    } 
} 
</ul> 

或者,按照您的計劃繼續,但將列表作爲模型移動到for循環外部。這將是最不靈活的渲染你的對象視圖方面:

var rootObject = JsonConvert.DeserializeObject<MyData.RootObject>(Data); 
List<string> list = new List<string>(); 
foreach (var record in rootObject.rows) 
{ 
    foreach (var nestedRecord in record.f) 
    { 
     list.Add(nestedRecord.v);   
    } 
} 
return View(list); 

在這種情況下(比其他選擇更簡潔),您的觀點:

@model System.Collections.Generic.List<string> 

<ul> 
@foreach (var record in Model) 
{ 
    <li>@record</li> 
} 
</ul> 
+1

你美麗的SOB。這正是我所期待的!謝謝! –

相關問題