webpages框架使用@razor语法向js代码传递Json字符串

    进入web开发时间太短,一个人尝试着做了几个初级项目,遇到了太多的困难。尽管不是学开发专业的,仅为爱好所以硬着头皮坚持了下来。

    将遇到的问题记录下来,备查。

  1. 使用vs2015中asp.net razor3网站模板作为基础逐渐扩展,遇到了服务器传递回js的Json字符串错误。
  2. 错误表现:原本字符串中的转义字符  \"   ,通过 @变量名 传递到js代码中,变成了 "
  3. 在网上检索了一下,遇到这个问题的不多,应该是初级错误;
  4. 看了一篇文章,其原因如下:为了防止某些攻击,系统将敏感字符进行了加工,于是就有了  \"  =>  "  的结果  ,原文链接
  5. 解决方法:将js代码中‘@变量名’用Html.Row(变量名)直接输出。
  6. 该问题得到解决。

例如:

服务器端代码如下:

    System.Web.Script.Serialization.JavaScriptSerializer jss = new System.Web.Script.Serialization.JavaScriptSerializer();
    var jsonStr = jss.Serialize(temJson);

    此时:使用断点,监视jsonStr,结果正确,部分字符串如下:

    "[{\"Id\":905,\"生产日期\":\"\\/Date(1460649600000)\\/\",\"月份\":4,。。。。。。}]"

js引用jsonStr代码为:

    var json=JSON.parse('@jsonStr');

    试运行,IE到这里出现错误,将字符串中的   \"   转化成了 "

修改该行代码为:

    var json=JSON.parse('@(Html.Raw(jsonStr))');

    再运行,结果正确。

 

转载于:https://www.cnblogs.com/jqdy/p/5452673.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值