2010-09-30 72 views
1

在MVC中,是否可以將字符串數組(List<string>)從C#代碼傳遞給viewdata,然後檢索視圖中的值?例如:javascript對象System.Collections.Generic.List`1 [System.String]?

C#:

List<string> names = new List<string>(); 
names.Add("a"); 
names.Add("b"); 
ViewData["names"] = names; 

MVC視圖:

<script type="text/javascript"> 
var nameList = '<%= ViewData["names"] %>'; 
</script> 

上面的代碼運行正常,但返回的視圖中的javascript對象是「系統。 Collections.Generic.List`1 [System.String]「,它無法解析以獲取值。

什麼是正確的方式來實現,而不是在C#中使用分隔符構建字符串,並在視圖中拆分值?

謝謝!

回答

1

您可以使用JavaScriptSerializer來生成您的數據的JS表示。

<script type="text/javascript"> 
var nameList = <%= new JavaScriptSerializer().Serialize(ViewData["names"]) %>; 
</script> 
+0

不錯!但返回的值現在是:「[a」,「b」「是一個字符串,而不是一個字符串數組? – BeCool 2010-09-30 02:28:06

+0

FTFY - 你不需要圍繞這些蜂圈的單引號<%= %> – jfar 2010-09-30 02:50:23

+0

這確實是一個非常酷的解決方案。它應該呈現爲一個數組,如果您刪除外部引號,如下所示:var nameList = <%= new System.Web.Script.Serialization.JavaScriptSerializer()。Serialize(ViewData [「names」])%>; – 2010-09-30 03:00:19

相關問題