2010-08-24 27 views
0

我有以下的Action方法。如何在Asp.net MVC中使用Json字符串初始化JavaScript變量?

public ActionResult Action() 
{ 
    var model = new SampleViewModel(); 
    model.JsonString = ReadJsonStringFromSomewhere(); 
    return ViewResult(model); 
} 

在我看來,我有以下方法來初始化一個javascript變量。

<script type="text/javascript"> 

    var jsObject = eval("(" + <%= Model.JsonString %> + ")"); 
    alert(jsObject); 

</script> 

我得到的'jsObject'是未定義的。這裏有什麼問題。也是使用複雜的json字符串初始化JavaScript變量的最佳方法嗎?

回答

3

JSON是文字的JavaScript。你根本不需要eval。下面的工作:

<script type="text/javascript"> 

    var jsObject = <%= Model.JsonString %>; 
    alert(jsObject); 

</script> 

這就是說,你eval版本應該仍然工作,雖然比較慢。您不顯示您的JSON,但它可能無效。

1

試試這個

<script type="text/javascript"> 

var jsObject = '<%= Model.JsonString %>'; 
alert(jsObject); 

+0

不,這給出了一個字符串,而不是一個對象。他想要一個物體。 – 2010-08-24 17:26:10

1

我認爲看着呈現的HTML和FireBug可能是你最好的朋友。 Craig Stuntz提供的代碼片段看起來不錯,所以如果它不工作,我會認爲發出的JSON有問題。

+0

查看HTML的+1。我應該提到這一點。 – 2010-08-24 18:01:27

+0

我會說!你的聲譽幾乎是我的2千倍! ;) 但說實話,它似乎是最常被遺忘的「調試」技術。我不斷提醒同事這樣做。 – Andorbal 2010-08-24 18:10:11