zoukankan      html  css  js  c++  java
  • 将不确定变为确定~Razor视图中是否可以嵌套JS代码

    回到目录

    这个问题有点意思,Razor的自动闭合性,导致JS代码不能直接与Razor代码混排,原来ASPX页面中,我们到处可见这种代码

      <%
               if(Model!=null){
               foreach (var item in Model.Res_ResourceProperty_Ext.GroupBy(i => i.PlatformID))
                {
                  string vidArr="";
                  string vidNameArr="";
                  foreach (var sub in item)
                   {
                    vidArr+=sub+",";
                    vidNameArr+=(new Service.EEE114.Common_BasePropValueService().GetCommon_BasePropValueByID(sub.VID ?? 0)!=null?new Service.EEE114.Common_BasePropValueService().GetCommon_BasePropValueByID(sub.VID ?? 0).Name:"")+",";
                   }
               %>
                var source = html.replace(reg, function (node, key) {
                    return {
                        'Platform_SubValValue': '<%=item.Key %>',
                        'Platform_SubValID': 'Platform_SubVal' + '<%=item.Key %>',
                        'platform': '<%=((Platform)item.Key).GetDescription()%>',
                        'VIDValue': '<%=vidArr %>',
                        'VIDDisplayName': '<%=vidNameArr %>'
                    }[key];
                });
                $("#selection").append(source);
                <%} 
                 }%>

    而如果是Razor页面,这种写法,显然是行不通的,因为JS变量直接混在了Razor块中,使得系统无法辨认JS,事实上,我们在razor中,可以加入<script>块

    来解决这个问题,上面的代码在Razor视图中,可以类似于这样

    @if (Model != null)
    {
        foreach (var item in Model.WebManageRoles.GroupBy(i => i.DepartmentID))
        {
    
            foreach (var sub in item)
            {
        <script type="text/javascript">
            var reg = new RegExp("\\[([^\\[\\]]*?)\\]", 'igm'); //i g m是指分别用于指定区分大小写的匹配、全局匹配和多行匹配。
            var html = document.getElementById("commentTemplate").innerHTML;
            var source = html.replace(reg, function (node, key) {
                return {
                    'Platform_SubValValue': '@item.Key',
                    'Platform_SubValID': 'Role' + '@item.Key',
                    'platform': '@item.Key',
                    'VIDValue': '@sub.ManageRoleID',
                    'VIDDisplayName': '@sub.RoleName'
                }[key];
            });
            $("#Selection").append(source);
        </script>
            }
        }
    }

    这种代码,我们感觉比ASPX里的排版更加清晰了,呵呵!

    感谢Razor!

    回到目录

  • 相关阅读:
    Linux下的lds链接脚本简介
    Fedora下载地址
    SkyEye的使用
    shell变量详解
    Linux shell 脚本攻略之正则表达式入门
    Linux shell 脚本攻略之统计文件的行数、单词数和字符数
    Linux shell 脚本攻略之创建不可修改文件
    Linux shell 脚本攻略之生成任意大小的文件
    Linux shell 脚本攻略之批量重命名
    Linux shell 脚本攻略之文件查找与文件列表
  • 原文地址:https://www.cnblogs.com/lori/p/3049514.html
Copyright © 2011-2022 走看看