Asp.net mvc 4 从.NET4升级到4.5会中断Javascript中的Html.Raw调用
我在c#MVC 3 razor页面中有以下代码,其中我将序列化数据传递到KnockoutJs的javascript变量中: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
@{
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) + ";" )