MVC学习四:Razor视图语法
@{ 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>JamesZou707@qq.com</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(); }