2012-11-12 21 views
3

我在this link中發現了一個解決方案,用於將一些數據從我的模型轉移到javascript對象。問題是我在Visual Studio中有一個錯誤,指出分號無效,但當我嘗試運行我的應用程序時,它完美地工作。剃刀頁面中的Javascript語法錯誤

下面是截圖,顯示錯誤:

enter image description here

但如果我刪除了分號,我現在有這個錯誤:

enter image description here

在反正,一JavaScript語句在行尾應始終有一個分號。

如果當我運行我的應用程序時,這意味着什麼,所有工作正常?

+2

[razor/javascript and trailing semicolon]的可能的重複(http://stackoverflow.com/questions/12111729/razor-javascript-and-trailing-semicolon) – epascarello

回答

3

您可以嘗試在虛線框包含它:

var serializedData = @{ 
    Html.Raw(NewtonSoft.Json.JsonConvert.SerializeObject(Model)); 
}; 

編輯:這個答案只適用於2010年的升級VS在VS 2012分打破了這種解決方法爲好。

+0

@crush:實際上挖入它,我們都是正確的,我們都是錯的。重複鏈接中的一個被刪除的答案解釋了爲什麼的問題(http://stackoverflow.com/questions/12275095/upgrade-from-net-4-to-4-5-breaks-html-raw-call-在JavaScript的)。當我做出這個答案時,我在Studio 2010上工作(自2012年以來,大多數人都是在幾個月前纔出現的),顯然到2012年(以及後來的2013年)的升級改變了JavaScript語法分析器。我會更新這個以反映這種細微差別,但它確實解釋了爲什麼它當時起作用,而不是現在起作用。 –

+0

根據您的修改刪除我的評論。感謝您保持此網站的有效性。 – crush

2

我剛剛開始使用Razor/MVC4,但你可以這樣嗎?

@{ 
    var serializedData = Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model)); 
} 
<script> 
    ... 
    var serializedData = @serializedData; 
+2

謝謝epascarello,但錯誤似乎被轉移到@serializedData變量的分號。 – Samuel

1

總結你的剃鬚刀代碼在引號,像這樣:

var myVar = '@serializedData'; 

如JavaScript鴨類型,你應該在大多數使用情況確定。

+0

如果您將JSON放入這些字符串中,則需要在字符串上使用'JSON.parse(...)'以將其反序列化爲JavaScript對象。這樣做會大大減慢網頁的執行速度。更好的解決方案是使用身份識別功能。也就是說,這是本頁面提供的唯一工作解決方案。 *查看重複的問題以獲得更好的解決方法。* – crush