2011-04-15 32 views
2

我想要做這樣的事情:How to pass List <T> object to MVC中的Javascript?

$(document).ready(function() 
{ 
    calendarGrid.create(@Model.Events) 
} 

Model.Events是一個列表。

我試着使用:

  • System.Web.Script.Serialization.JavaScriptSerializer.Serialize(@ Model.Events)
  • JSON.parse(@ Model.Events)
  • JSON.strigngify (@ Model.Events)

沒有什麼幫助。

+0

什麼是「T」?它是可序列化的嗎? – 2011-04-15 19:02:51

回答

3

您需要編寫代碼將您的服務器端列表序列化爲發送到客戶端的代碼。試試這樣:

calendarGrid.Create(@Html.Raw(JavaScriptSerializer.Serialize(Model.Events))) 

@Html.Raw(...)的全部內容將被髮送到輸出。

+3

實際上,應該將'calendarGrid.Create(@ Html.Raw(JavaScriptSerializer.Serialize(Model.Events)))'作爲HTML編碼的'@'方法並且'JavaScriptSerializer'的輸出在這種情況下不應該被編碼因爲它已經這樣做了。 – 2011-04-15 19:12:43

+0

它的工作原理。如果我的具有DateTime屬性,那麼添加DateTime轉換的正確方法是什麼? – Agzam 2011-04-15 19:19:11

+0

好點,達林。 – marcind 2011-04-15 21:24:33

1

我通過一個javascript變量設置爲它使用了巨大的成功:

<script> 
    var eventList = @(Html.Raw(Json.Encode(Model.Events))); 

    $(document).ready(function() { 
     calendarGrid.create(eventList); 
    }); 

</script> 

從那裏,您可以自由使用EVENTLIST變量作爲JSON對象。

這個技巧是使用Html.Raw來防止任何進一步的編碼發生

+0

,也工作,謝謝 – Agzam 2011-04-15 19:26:48