• View数据呈现相关技术


    一、了解Razor语法

          1、Razor基本语法

               a)输出单一变量时不需要加分号做结尾。如:

    <p>现在时刻:@DateTime.Now</p>

               b)输出一段含有空白字元或运算子的结果时,必须在前后加上一个小括弧。如:

    <p>会员名称:@(@User.Identity.Name + Model.MemberLevel)   启用状态:@(@ViewBag.IsEnabled?"启用":“停用”)</p>

               c)在页面中执行多行C#代码时,必须在前后加上一个大括弧。如:   

    @{ 
           var name = "Will"; 
           var message = "你好,我是" + name; 
       }

                d)在页面多行C#代码的Razor语法中插入HTML或其他文字内容,必须在每一行最前面加上一个“@:”符号,而且加上“@:”符号的这行代码里,也可以再加上其他Razor变量。

    @{
          var name = "Will";
          @:你好,我是@name
     }

                e)如果要在检视页面中输出“@”符号,可以用两个“@”符号。如:@@Will_Huang 此语法最后会输出:@Will_Huang


          2、Razor与HTML混合输出

               a)在页面中撰写if判断句,如:  

    @if(ViewBag.IsEnaled){
        @:启用
     } else {
        @:停用
     }

                如果ViewBag参数并不存在,其回传的结果将为null,但是if判断句中必须回传Boolean类型,因此会引发“无法将null转换成‘bool’”异常,因此以上代码可改为:         

    @if(ViewBag.IsEnabled != null && ViewBag.IsEnabled)
    {
         @:启用
     } else {
         @:停用
    }

               b)如果要在代码区块输出大量文字,只要在代码区块里的前后加上一组HTML标签即可,Razor会智能地判断出这是一段HTML标签文字,如此一来,如果在大范围的代码区段中就不用在每一行前面加上"@:"符号了。如:
                 

    @if(ViewBag.IsEnabled)
    {
       <span>启用</span>
    }
    else
    {
       <span>停用</span>
    }

        如果在上述区段中不想输出如何前后的标签该怎么办呢?在Razor页面里,可以使用特殊的<text>标签来代替这个HTML标签,最后输出到浏览器时不会输出<text>这个标签。如:
      

    @if(ViewBag.IsEnabled){
        <text>
            显示启用的HTML段落
          <p>
                   @ViewBag.EnabledMessage
            </p>
        </text>
       } else {
         <text>
             显示停用的HTML段落
          <p>
                   @ViewBag.DisabledMessage
            </p>
          </text>
    }

               也可以在多行C#代码段落里使用相同的语法,利用"@:"或<text>作为HTML与Razor语法之间的切换,如

    @{
          var is_valid = true;
          if(!is_valid){
              <text>无权限!</text>
         }
       }

           3、Razor与HTML混合输出的技巧
                a)属性名称误判

                   如果想要在Will部分改写成Razor语法输出一个变量:您好,Will先生。如果写成"您好,@ViewBag.Name先生",Razor语法把"@ViewBag.Name先生"当成了一个C#语法,把"Name先生"当成ViewBag的属性了,因此输出了"您好,"。解决方法:在Razor语法前后加上小括弧就可以明确区分Razor与HTML内容,

    上述可改为:“您好,@(ViewBag.Name)先生”。另外两种解决方法:“您好,<span>@ViewBag.Name</span>先生” 或者"您好,@ViewBag.Name<span>先生</span>"。

                b)未预期的额外属性

                  

        

  • 相关阅读:
    C#缓存
    js 日期相减
    无法加载图片信息处理
    一些经营性的文章,写得不蛮不错
    集线器、交换机、路由器的区别
    存储过程使用建议
    存储过程优点和缺点
    杀人游戏规则介绍(1.0~5.0版本)
    C#网络编程(1) 来源出网络的资源收集
    谈谈外包软件项目的经验
  • 原文地址:https://www.cnblogs.com/zhangyg/p/3288291.html
Copyright © 2020-2023  润新知