Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jquery在cshtml页面中不工作_Javascript_Jquery_Asp.net Mvc_Razor - Fatal编程技术网

Javascript Jquery在cshtml页面中不工作

Javascript Jquery在cshtml页面中不工作,javascript,jquery,asp.net-mvc,razor,Javascript,Jquery,Asp.net Mvc,Razor,我需要使用@ViewData[value];准备好了。但是当我使用 @ViewData[value]所有jQuery都不工作。我的样本如下: $(document).ready(function () { var test = @(ViewData["value"]); // remove this line query has been working if (test != null){ //my code } }); ViewData在客户端上不

我需要使用@ViewData[value];准备好了。但是当我使用 @ViewData[value]所有jQuery都不工作。我的样本如下:

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

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

在服务器端将视图数据序列化为json 将其写入隐藏字段,并将其解析为客户端的javascript对象。
ViewData在客户端上不可访问,因为它仅存在于视图渲染中。 可能的选择

在服务器端将视图数据序列化为json 将其写入隐藏字段,并将其解析为客户端的javascript对象。 而不是访问@ViewData[value];在javascript中,最好将该值放在隐藏字段或其他元素中。看看下面的代码:

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

...
...
...
$(document).ready(function () {
    var test = $("#some-id");
    if (test != null){
       //my code
    }
});
而不是访问@ViewData[value];在javascript中,最好将该值放在隐藏字段或其他元素中。看看下面的代码:

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

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

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

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

如果ViewData[value]的值是number,则不使用引号将其括起来也可以,但如果它是带空格的字符串,例如ViewData[value]=Hello World,则浏览器将出现一个错误,显示SyntaxError:missing;before语句,这就是脚本或jquery不再工作的原因。

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

 $(document).ready(function () {
         var test = '@(ViewData["value"])'; 
           if (test != null){
     }
    });
如果ViewData[value]的值是number,则不使用引号将其括起来也可以,但如果它是带空格的字符串,例如ViewData[value]=Hello World,则浏览器将出现一个错误,显示SyntaxError:missing;before语句,这就是脚本或jquery不再工作的原因。

如果ViewData[value]是字符串,可以尝试以下操作:

var test = '@ViewData["value"]';
如果ViewData[value]是字符串,可以尝试以下操作:

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

也许这一个可以帮助您var test=@serializer.SerializeViewData[value];也许这一个可以帮助您var test=@serializer.SerializeViewData[value];IMHO OP尝试执行的操作也是一个可能的选项:渲染脚本时访问ViewData IMHO OP尝试执行的操作也是一个可能的选项:渲染脚本时访问ViewData这个答案很好,但在高度优化的web应用程序中是不可接受的。假设您调用ViewData[value]的web应用程序返回20kb大小的数据,然后将20kb大小存储到一个隐藏字段中,该字段将20kb大小添加到页面大小,因此整个web进程总共添加40kb。这个答案很好,但在高度优化的web应用程序中是不可接受的。想象一下,调用ViewData[value]的web应用程序返回20kb大小的数据,然后将20kb大小存储到一个隐藏字段中,而该字段又将20kb大小添加到页面大小中,因此整个web进程总共添加了40kb