2011-12-08 25 views
0

我試圖讓下面使用JsonResult結果來查看,但我不能從行動傳遞的Json通過ViewBag

var localJSON = [ 

      { "id": "1", "label": "tagName1", "value": "tagValue1" }, 
       { "id": "2", "label": "tagName2", "value": "tagValue2" }, 
       { "id": "3", "label": "tagName3", "value": "tagValue3" }, 
       { "id": "1553", "label": "tagName1553", "value": "tagValue1553" } 
    ]; 

這裏是我使用的方法:

控制器

private JsonResult GetAvailableTags() 
     { 
      var tagsList = Facade.Tags.Get(CurrentLocale.ID); 
      var retValue = new 
      { 
       id = tagsList.Select(x => x.ID).ToArray(), 
       label = tagsList.Select(x => x.Name).ToArray(), 
       value = tagsList.Select(x => x.Name).ToArray() 
      }; 
      return Json(retValue); 
     } 
public ActionResult AddPhoto() 
     { 

      var availblableTags = GetAvailableTags(); 
      JavaScriptSerializer serializer = new JavaScriptSerializer(); 
      ViewBag.AvailableTags = serializer.Serialize(availblableTags.Data); 
      return View(); 
     } 

視圖

var localJSON = [ @Html.Raw(ViewBag.AvailableTags)]; 

結果是

var localJSON = [ 
    {"id":[1,2,3,1553],"label":["tagName1","tagName2","tagName3","tagName1553" ],"value":["tagName1","tagName2","tagName3","tagName1553" ]} 
     ]; 

我應該怎麼做才能解決?

回答

1

我假設你想要得到x.Valuevalue在JSON中?然後你的retValue分配改爲

var retValue = tagsList.Select(
    x => new 
    { 
     id = x.Id, 
     label = x.Name, 
     value = x.Value 
    }).ToArray(); 

在你retValue分配的代碼你創建匿名類型與數組類型的會員ID,標籤和值的單一對象。對於你想要的輸出,你需要創建一個數組,其中的每個成員都是一個具有簡單字段id,名稱和值的對象。