首页新闻找找看学习计划

@Html.Raw("var links="+ ViewBag.MenData+";") 这种 如何理解

0
悬赏园豆:5 [已解决问题] 解决于 2016-12-01 16:57

控制器代码如下
   public ActionResult Index()
        {
            //var links = [
           // { icon: '/Content/ligerUI/images/3DSMAX.png', title: '人员信息', url: '/UserList/UserTolist' },


            var usr = (from x in _DBAction
                       select new { icon = x.ActionImgUrl, title = x.ActionName, url = x.ActionUrl }).Distinct();

                System.Web.Script.Serialization.JavaScriptSerializer json = new System.Web.Script.Serialization.JavaScriptSerializer();

              ViewBag.MenData= json.Serialize(usr);

             

            return View();
        }


在视图的代码如下

    @Html.Raw("var links="+ ViewBag.MenData+";")//

只是我不明白,@Html.Raw 为什么没有输出html标签呢

或者说  "var links="+ ViewBag.MenData+";"  是如何 变成html标签的呢 

zhengyingcan的主页 zhengyingcan | 初学一级 | 园豆:12
提问于:2016-05-24 20:19
< >
分享
最佳答案
0

这里不是标签输出,只是定义JS的一个变量 links

收获园豆:5
Yu | 专家六级 |园豆:12944 | 2016-05-24 21:15

定义了JS一个变量,  也就是说 @Html.Raw 还有输出变量的作用, 不但但只是输出html标签了,

是不是  @Html.Raw 还有把 变量 转换成 标签的作用呢

zhengyingcan | 园豆:12 (初学一级) | 2016-05-25 08:21

@zhengyingcan:

它的主要目的是把HTML标签按原意输出,而不是作为内容输出。

如果它输出的内容不是HTML标签,跟直接输出没什么区别,就像你的例子,它跟HTML标签一点关系都没有

Yu | 园豆:12944 (专家六级) | 2016-05-25 08:25

@zhengyingcan: 如果放在<script></script>里面,就作为JS输出;如果放在body或某个标签里面,就作为内容输出

Yu | 园豆:12944 (专家六级) | 2016-05-25 08:39

@Yu: 也就是html标签 本质上是json,   通过"var links="+ ViewBag.MenData+";" 这种 方式,直接就是json, IE 编译json的速度上 比 html 更快。

所以这种方式更高效。  

@Html.Raw 不但可以输出 html标签,还可以输出 购成html标签 json ,可以这样子理解吗,老师

zhengyingcan | 园豆:12 (初学一级) | 2016-05-25 08:50

@zhengyingcan: html标签跟json也是一点关系都没有

如果ViewBag.MenData的内容是json,那么这里的意思就是定义一个变量links来接收json数据,如:

var links="{name:'apple',address:'zhuhai'}";

Yu | 园豆:12944 (专家六级) | 2016-05-25 09:05

@Yu:   是不是 @Html.Raw("var links="{name:'apple',address:'zhuhai'}")//  这样子也能出结果呢

zhengyingcan | 园豆:12 (初学一级) | 2016-05-25 11:29

@zhengyingcan:

可以的,=号后面的"不要

Yu | 园豆:12944 (专家六级) | 2016-05-25 12:49
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册