欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MVC学习四:Razor视图语法

程序员文章站 2022-06-10 13:08:17
...
@{
    Layout = null;
}
<hr />
<!DOCTYPE html>
@this.GetType().Assembly.Location.ToString()
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>RazorView</title>
</head>
<body>
    <!--1.0 Razor C#语句块-->
    @{
       for(int i =0;i<10;i++)
       {
           //Response.Write("<div></div>"); 
           <gzitcast>哈哈哈 @Model.CName~~~~~</gzitcast>
           //Response.Write("<div>哈哈哈哈~~~~</div>");
       }
    }
    <!--2.0 输出. 使用小括号-->
    <div>@(ViewBag.CName).CName</div>
    结果:
    <div>aa.CName</div>
    
    <!--3.0 输出 Email-->
    @{
        //定义一个 匿名类 变量
        var qq = new { com = "126" };
     }

    <div>[email protected]</div>
    <!--             输出qq变量的com属性-->
    <div>JamesZou707 @qq.com</div>
    
    <hr />
    <!--4.0 输出 字符串-->
    <!--4.1直接使用@变量 输出变量值,相当于 Response.Write(qq.com)-->
    @qq.com
    <!--4.1 代码块 输出 字符串-->
    @{
        Response.Write(qq.com);   
     }
    <hr />
    <!--5.0 输出 html字符串 -->
    @{
        string strHtml = "<input type='text'/>";
        @strHtml
    }
    <!--5.1 razor 会自动 转义 输出字符串中的 尖括号 <> -->
    @strHtml
    
    <!--5.2 Response输出 html,缺点 ResponseWrite的内容 都在页面最上面-->
    @{
        Response.Write(strHtml);
    }
    
    <!--5.3 使用Html.Raw方法 输出不转义的html,因为 方法会返回 一个 HtmlString 对象-->
    @Html.Raw(strHtml)

    
    <!--5.4 使用HtmlString 输出不转义的html-->
    @{
        HtmlString htmlRaw = new HtmlString("<input type='button' value='RawHTML'/>");
        @htmlRaw.ToHtmlString();
     }
   
    
    <!--5.5 使用MVCHtmlString静态方法Create输出不转义的html-->
    @{
        HtmlString strHtml2 = MvcHtmlString.Create("<input type='radio'/>");   
        @strHtml2 
    }

    <!--6.0 在视图中 声明"方法" ,此方法 就是 在 视图类中 添加一个 返回值为 HelperResult 的方法-->
    <!--注意:一般 不在视图上定义方法,因为 方法就是业务,而mvc本身就是为了 把 业务 和 视图 分离开-->
    <!-- 之所以 Razor支持 在视图上 定义方法,就是为了 解决 视图上要重复  输出 html代码 块 的情况 -->
    @helper ShowHi(string a) {
        <div style="border:1px solid #0094ff;">哈哈哈~~~~ @a</div>
    }
    
    @ShowHi("小孩~~~");

    <!--6.1 在视图中 调用 无返回值 方法,必须要加上大括号 && 重要:在当前视图 中 传递参数 给另外一个视图-->
    @{ViewData["partData"] = "哇哈哈哈哈";}
    @{Html.RenderPartial("~/Views/Home/PartTargetView.cshtml");}

    <!--6.2 在视图中 调用 有返回值方法,不需要加 大括号; 由此看出@后直接跟变量 或 带返回值的方法,会直接在此输出 变量内容 或 方法返回的值-->
    @Html.TextBox("txtname")

    <!--6.3调用泛型方法 需要 加大括号-->
    @*
        @{ShowObj<object>()}
    *@

    <!--7.0 注释-->
    @*
    哇哈哈哈哈,我们是注释~~~~~~~~~~~!
    *@
    
    @{
      //哈哈哈~~,我是单行注释  
    }
    
    <!--8.0 在C#代码块中 输出文本-->
    @{
        <div>我爱广州</div>
        <!--使用 Razor内置标签 <text> -->
        <text>我爱广州</text>
        <!--方式二-->
        @:我爱广州
     }
    
    <!--9.0 在视图中 输出@符号-->
    @@我被转义了

    
    <!--10.0 访问内部对象属性-->
    @Response

    @("211".AsInt())

    @Href("~/Home/Index");
</body>
</html>
        //--------------------------------------2.0 加载指定视图-----------------------------------
        public ViewResult LoadViewBySelf()
        {
            //1.0 通过指定 视图名 加载 指定的视图:此视图 必须在 当前控制器同名 的文件夹中
            //return View("LoadTarget");
            //2.0 通过指定 视图路径 加载指定的视图:基于根目录
            return View("~/Views/Home/List.cshtml");
        }

        //---------------------------------3.0 控制器 向 View传递数据
        public ViewResult TransData()
        {
            ////动态数据类型,类似与JS里的对象。
            ////但是因为 此种对象是在运行时才知道对象的类型,所以编译器和VS都无法推断并产生 智能提示
            //dynamic obj = new object();
            //dynamic Cla = new ClaController();
            //dynamic num = 1;
            ////动态数据类型 可以动态 添加属性
            //obj.AA = 123;
            //int a = obj.AA;

            //3.1 ViewBag
            ViewBag.GzItcast = "广州传智播客~~~!";
            //3.2 ViewData
            ViewData["HnItcast"] = "湖南传智播客~~~!";
            //3.3 TempData
            TempData["USAItcast"] = "美国传智播客~~~!";
            //3.4 Model
            Models.Class modelClass = new Models.Class() { CName="德国传智播客~~!" };

            ViewData.Model = modelClass;
            return View();
        }