Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.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
Asp.net mvc 4 从.NET4升级到4.5会中断Javascript中的Html.Raw调用_Asp.net Mvc 4 - Fatal编程技术网

Asp.net mvc 4 从.NET4升级到4.5会中断Javascript中的Html.Raw调用

Asp.net mvc 4 从.NET4升级到4.5会中断Javascript中的Html.Raw调用,asp.net-mvc-4,Asp.net Mvc 4,我在c#MVC 3 razor页面中有以下代码,其中我将序列化数据传递到KnockoutJs的javascript变量中: @{ var listData = new JavaScriptSerializer().Serialize(Model.ListItems); var pagerData = new JavaScriptSerializer().Serialize(Model.Pager); } // additional cod

我在c#MVC 3 razor页面中有以下代码,其中我将序列化数据传递到KnockoutJs的javascript变量中:

    @{   
        var listData = new JavaScriptSerializer().Serialize(Model.ListItems);
        var pagerData = new JavaScriptSerializer().Serialize(Model.Pager);
    }


// additional code

    <script type="text/javascript" >

        var ListData = @(Html.Raw(listData));  // <-- Syntax Error here
        var PagerData = @(Html.Raw(pagerData));  // <-- Syntax Error here

     // additional js code

    </script>   
@{
var listData=new JavaScriptSerializer().Serialize(Model.ListItems);
var pagerData=newJavaScriptSerializer().Serialize(Model.Pager);
}
//附加代码

var ListData=@(Html.Raw(ListData));// 请就这一点加上投票。我们将在下一版本的VS中解决此问题。我已将您的复制代码附加到此错误,并添加了此帖子的链接,作为此问题的另一个表现形式。

我也遇到过同样的情况,但它是随机发生的。 我试图解决的问题如下:

确保您可以在调试模式下编译/构建/调试,切换到发布模式并尝试从该模式下调试/发布。 切换回调试模式并重新尝试发布

一些切换模式的组合起到了作用,我只是不知道它到底是什么。 一旦开始工作,不要关闭VS;-)


希望MS在SP1中解决这个问题。

这个问题在Visual Studio 2013 SP 2中仍然存在

要修复此警告消息,请先初始化javascript变量。IMO Visual studio认为,如果任何变量后跟@,则该变量为隐式类型

        var ListData;
        var PagerData;
        ListData =  @(Html.Raw(listData));
        PagerData =  @(Html.Raw(pagerData));

我正在使用MVC5,发现了同样的问题,所以我用这种方式解决了它,它应该适用于所有版本

@Html.Raw("var myData = " +  Json.Encode(this.Model.MyData) + ";" )

但是,我只会在最简单的情况下使用它,因为您会丢失任何关于VAR类型的智能感知(尽管它确实将其视为一个全局实例,并且编译器不会抛出抖动),所以现在我认为,空定义可能是最好的方法。

不。至少在这个项目所在的机器上没有。当我回到旧版本并认为问题已经解决时,我认为这可能是一个更尖锐的问题,但它没有。虽然我只是在几行上得到它,但不是每一行。你提到过这个项目是编译的。生成的HTML看起来是否正确,例如使用格式良好的Javascript?或者它看起来像是被双重编码或其他形式的错误?仍然没有在VS2013中修复。连接是臭虫的黑洞。我真的相信他们会在connect上查看产品中有意留下哪些问题的列表。很高兴看到在这个问题上有一些进展。即使已经登录到Connect站点,上面的链接(404)对我来说也不起作用。你能用我的live id检查一下链接吗。。该产品是VisualStudio。标题是notken_说的“标记为语法错误的有效javascript/Razor语法”,谢谢。我必须没有正确的权限或其他什么。URL包含该标题,但内容为“未找到页面”。能否尝试提交新的连接问题并让我知道反馈id?我将以dupe的身份解决您的问题。为了针对Visual Studio注册此错误,我还讨论了一些其他问题和注册。在这个过程结束时,我能够访问上面的页面。谢谢。这在VS2012中似乎不起作用。我仍然得到语法错误。
@Html.Raw("var myData = " +  Json.Encode(this.Model.MyData) + ";" )