[MVC]通過ViewData傳遞列表給JavaScript陣列

iDotNetSpace發表於2009-11-04

 最近的專案需要一個新增計劃表功能:使用者新增一條條計劃,儲存到javascript陣列,生成TABLE,最終傳值給controller。這樣子,在使用者編輯或Postback的時候需要從controller傳值給View。首先,想到的是使用ViewData儲存IList,然後到View遍歷賦值給javascript的array。但是在Javascript中使用一大串的,編譯器不是提示缺“)”就是缺";"...(表笑我-_-|||)

  嗯。到網上搜尋下,找了一篇類似問題的帖子。

   How to iterate through objects in ViewData via javascript. on the page/view?

    在帖子的回覆中提供了2種思路,一是直接View中foreach ViewData儲存的List生成陣列。對這種方法感興趣的朋友可以自己看一下,我還是覺得對View不友好。另一種是使用儲存JSON到ViewData,使對javascript來說莫名其妙的容器變為熟悉無比的JSON。這裡主要講第二種。

    首先是我們需要將列表轉為JSON。帖子也提到了ScottGu大牛的一篇文章:Tip/Trick: Building a ToJSON() Extension Method using .NET 3.5。在文章中定義了2個轉換OBject為JSON的擴充套件方法。 

 

<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gt        public static string ToJSON(this object obj)
        {
            JavaScriptSerializer serializer 
= new JavaScriptSerializer();
            
return serializer.Serialize(obj);
        }

        
public static string ToJSON(object obj, int recursionDepth)
        {
            JavaScriptSerializer serializer 
= new JavaScriptSerializer();
            serializer.RecursionLimit 
= recursionDepth;
            
return serializer.Serialize(obj);
        }

 

     使用起來也很簡單: ViewData["Schedules"] = ScheduleList.ToJSON();

  通過JavaScriptSerializer將物件轉換為JSON,我們就能很容易的在Javascript中處理。比如用Jquery:

[MVC]通過ViewData傳遞列表給JavaScript陣列GetJsonList

 

作者:蒼苔

出處:http://www.cnblogs.com/WindWing/

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連線,否則保留追究法律責任的權利。  

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/12639172/viewspace-618122/,如需轉載,請註明出處,否則將追究法律責任。

相關文章