Jquery无法在cshtml页面中工作

时间:2013-02-28 04:43:20

标签: javascript jquery asp.net-mvc razor

我需要使用@(ViewData["value"]);中的document.ready。但是当我使用的时候 @(ViewData["value"])所有jQuery都无法正常工作。我的样本如下:

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

4 个答案:

答案 0 :(得分:3)

而不是在javascript中访问@(ViewData["value"]);,最好将该值放在隐藏字段或其他元素中。看下面的代码:

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

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

答案 1 :(得分:2)

如果在脚本标记内使用C#,则需要将C#变量括在引号中。尝试

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

如果您的ViewData [“value”]的值是数字,那么如果您不将其括在引号中但是如果它是带有空格的字符串,例如ViewData [“value”] =“Hello World”,您的浏览器将是正常的得到一个错误,说“SyntaxError:missing; before statement”,这就是你的脚本或jquery将不再起作用的原因。

答案 2 :(得分:1)

客户端无法访问ViewData,因为它仅存在于视图渲染中。 可能的选择

  1. 将您的视图数据序列化到服务器端的json
  2. 将其写入隐藏字段,然后将其解析为客户端的javascript对象。

答案 3 :(得分:0)

如果您的ViewData["value"]string,则可以尝试:

var test = '@ViewData["value"]';