1

我需要使用@(ViewData["value"]);in 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

4 回答 4

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
    }
});
于 2013-02-28T04:48:36.537 回答
2

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

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

如果您的 ViewData["value"] 的值是数字,则可以不将其括在引号中,但如果它是带有空格的字符串,例如 ViewData["value"]="Hello World" 您的浏览器将出现错误说“SyntaxError: missing ; before statement”这就是你的脚本或 jquery 将不再工作的原因。

于 2013-02-28T04:49:59.573 回答
1

ViewData 在客户端上是不可访问的,因为它只存在于视图渲染中。可能的选择

  1. 在服务器端将您的视图数据序列化为 json
  2. 将其写入隐藏字段,然后他们将其解析为客户端的 javascript 对象。
于 2013-02-28T04:48:28.497 回答
0

如果你ViewData["value"]是一个string,你可以试试这个:

var test = '@ViewData["value"]';
于 2013-02-28T04:58:55.443 回答