2013-02-28 128 views
1

我需要使用@(ViewData["value"]);document.ready。但是,當我使用 @(ViewData["value"])所有jQuery不起作用。我的示例如下:jquery不能在cshtml頁面工作

$(document).ready(function() { 
    var test = @(ViewData["value"]); // remove this line query has been working 
    if (test != null){ 
     //my code 
    } 
}); 
+0

也許這一個幫助你VAR測試= @(serializer.Serialize(計算機[ 「值」)); – snowp 2013-02-28 04:48:54

回答

2

如果使用C#內部腳本標記,則需要將C#變量括在引號中。嘗試

$(document).ready(function() { 
     var test = '@(ViewData["value"])'; 
      if (test != null){ 
    } 
    }); 

如果你的ViewData的值「值」]是它的好,如果你不放在引號數字,但如果是字符串,例如空格計算機[「價值」] =「你好世界「您的瀏覽器會收到一個錯誤,說」SyntaxError:失蹤;之前的聲明「,這就是爲什麼你的腳本或jQuery將不再工作。

1

ViewData在客戶端無法訪問,因爲它只存在於視圖呈現中。 可能的選擇

  1. 序列化在服務器端視圖數據JSON
  2. 其寫入隱藏字段,並分析其對客戶端的JavaScript對象。
+0

恕我直言,OP試圖做什麼也是一種可能的選擇:在呈現腳本時訪問'ViewData' – andri 2013-02-28 05:06:53

3

而不是訪問@(ViewData["value"]);裏面的javascript,最好把它放在隱藏字段或其他元素中。看代碼如下:

<input id="some-id" type="hidden" value="@(ViewData["value"]);" /> 

... 
... 
... 
$(document).ready(function() { 
    var test = $("#some-id"); 
    if (test != null){ 
     //my code 
    } 
}); 
+0

這個答案很好,但在高度優化的Web應用程序中是不可接受的。想象一下,調用ViewData [「value」]的Web應用程序返回20kb大小的數據,然後將20kb大小存儲到隱藏字段,然後將20kb的大小存儲到您的頁面大小中,因此總計40kb將被添加到整個Web進程 – 2013-03-01 04:15:38

0

如果您ViewData["value"]string,你可以試試這個:

var test = '@ViewData["value"]'; 
相關問題