MVC5学习系列--Razor视图(一)
嗷~小弟我又出现了~咳咳..嚎过头了, 先说一说为什么写这个吧,~首先肯定是我自己需要学(废话 - -,)//,之前也写过MVC4的项目,嗯..但是仅限于使用并没有很深入的每个模块去了解,
这段时间拜读了汤姆大叔的MVC6,感觉改进很多啊~嗯...但是MVC6咱们..暂时还用不上..所以还是回到主题,MVC5..
MVC5按照官方的解释,嗯..通俗点就是,我很屌,我和MVC4不一样,我们仅仅是名字差不多而已,我不是MVC4的版本升级..(咳,然并卵)...
切入主题,今天我们就先来了解了解Razor视图.
我们初步了解一下,Razor视图是在MVC3中加入的新玩法,嗯..注意MVC1 2 都是和Webform那种蛋疼无比的写法,那么,问题来了,挖掘机技术哪家强?!(艹,什么鬼,.. 呃,是视图在MVC中到底是做什么的呢?)...
视图的作用,就是向用户提供用户界面~,(这是废话 - -,),重点在后面,视图不同于之前的webform那种基于文件的框架,他不会直接被访问,而且游览器也不能直接指向一个视图的地址去渲染他...(嗯..我们的视图还是很傲娇的!!!).
由于视图的傲娇,所以需要我们必须通过控制器去渲染他,好吧,其实是视图所用的数据都是由控制器提供的..不走控制器..视图显示毛线..渲染流程如下图(请无视这稀烂的绘图工具..):
上面大概展示了视图的作用..下面我们就来用用傲娇的它
视图常用的一些数据字典.
ViewBag,ViewData,ViewDataDictionary,任意强类型..
嗯,这里我们暂时不提强类型的,后面讲模型的时候在来将,
下面我们看个实例,代码如下:
//我们在Test控制器中,用三种方式来给视图的Data赋值.. public class TestController : Controller{//// GET: /Test/public ActionResult Index(){ViewBag.Name = "我的MVC测试";ViewData["name"] = "ViewData测试";ViewData.Add("age", "10");return View();}}
视图Index的代码如下:
@{ViewBag.Title = "Index"; }<h2>@ViewBag.Name</h2> <h2>@ViewBag.name</h2> <h2>@ViewBag.age</h2> <h2>@ViewData["name"]</h2> <h2>@ViewData["Name"]</h2> <h2>@ViewData["age"]</h2>
最终的显示效果如下:
我们发现,.第一个
ViewBag.Name 被ViewData["name"]给覆盖了,而且我们不管是用ViewBag 还是ViewData赋值,都可以用互相调用对方的属性,很显然,他们都是调用的视图中的ViewDataDictionary类型的属性..
ViewData,ViewBag只不过是提供给我们的两种调用的方式,且不区分大小写,且这两种方式在性能上...好像也没多大区别,我这里就不测了,欢迎大神给结论, 好了,废话不多说,我们进入下个环节,通过上面的实例,我们可以知道Razor视图中,最关键的就是这个@符~所以我们直接进入@符详解(也就是Razor的语法示列).. 1.隐式代码表达式:其实就是最常用,最简洁的,@后面接上你要调用的类型..属性..值..就OK了...
<span>@Model.aaaa</span>
注意: 这里要说明的是,@后面会根据"<"来判断是否结束了这个表达,所以会有些特殊的场景出现BUG 比如如下代码..
@{string name = "啪啪啪~";} <span>@name.asd</span>
我们本来想显示 啪啪啪.asd..这个字符串,结果编译出错了,Razor视图因为没有碰到"<"所以把asd认为这是name的属性..,所以我们需要下面的,显式代码表达式,
2.显式代码表达式:嗯..就是@(),括号中括号中可以写一些基础的计算,当然也可以调用属性..值..什么的..
<span>1+1=@(1+1)</span>
上面的问题就迎刃而解了,如下的代码编译就通过了~
@{string name = "啪啪啪~";} <span>@(name).asd</span>
3.无编码代码表达式
嗯..Razor视图是相当智能的一个东西,如下代码:我们本来想在界面上显示一个大大的asdasd..结果 - -,成了
@{string name = "<h1>asdasd</h1>";} <span>@(name).asd</span>
效果如下:
我们的H1标签..直接被视图编译成了字符串,哦买噶 - -,直接帮我们防止了XSS脚本注入攻击~但是,我们自己想用..怎么办呢..
修改代码如下:
@{string name = "<h1>asdasd</h1>";} <span>@(Html.Raw(name)).asd</span>
结果如下:
嗯,达到了预期的效果,那么..这个Html.Raw()的方法...你们懂的,我就不说了..
4.代码块
其实我们上面的实例已经用到了,代码如下: 关键方法 @{//Dosoming}
@{string name = "<h1>asdasd</h1>";int a = 1;for (int i = 0; i < a; i++){}}
5.文本和标记相结合
诡异的是..这里的标签不会被编码掉~嗯..所以说他智能嘛..(咳咳,不卖萌了..)
@for (int i = 0; i < 5; i++) {<span>哈哈</span> }
6.转义符代码分隔符
大家都知道..在C#里面如果要在字符串里显示""..是要加上转义符的,我们这个视图..嗯..关键字就一个@~那么我们如何显示@符呢 - -,
代码如下:
<span>@@</span>
哈哈哈哈...多加一个@转义就行了 - -,
7.服务器端注释
注释...我就不说了..你们懂的...年轻的骚年~!做一个有节操的程序员哟~~
代码如下:
@*这里是注释内容~*@
我们生成MVC模版里面可以看到这么一个东西,
_ViewStart.cshtml
我们简单的来讲讲这个是什么,通俗的来说..这玩意..就是母版页啦..
这个视图会优于他存在的Views文件夹中所有的视图执行..然后..他可以指定一个母板页面,最后 你们都懂了 - - ...我就不说了..
当然,微软不会这么不智能,有些视图我们不需要母版页,那我们就可以用这个方法返回,代码如下:
public ActionResult Index(){ViewBag.Name = "我的MVC测试";ViewData["name"] = "ViewData测试";ViewData.Add("age", "10"); //这里 返回部分视图return PartialView();}
这一篇详细的了解了在MVC3之后出现的Razor视图的一些基本使用方式,了解了一下他的内部情况,下次我们来了解MVC中的模型~,感谢各位大大的支持,本篇结束...
转载于:https://www.cnblogs.com/GuZhenYin/p/4692232.html
MVC5学习系列--Razor视图(一)相关推荐
- ASP.NET MVC 3.0学习系列文章--Razor and ASP.NET MVC 3.0
系列文章 ASP.NET MVC 3.0学习系列文章-序 Razor and ASP.NET MVC 3.0 ASP.NET MVC 3.0学习系列文章-Controllers in ASP.NET ...
- Asp.Net MVC5入门学习系列⑤
Asp.Net MVC5入门学习系列⑤ 原文:Asp.Net MVC5入门学习系列⑤ 检查VS生产的编辑方法和编辑窗体 前面我们一步使用强类型,然后创建Controller(控制器)的时候,VS默认已 ...
- Asp.Net MVC5入门学习系列⑥
Asp.Net MVC5入门学习系列⑥ 原文:Asp.Net MVC5入门学习系列⑥ 接着上次的篇幅,我们这篇手动来写一个查询的流程代码! 搜索/查询 流程功能的实现 那现在要做搜索(查询)功能我们第 ...
- [转]ASP.Net MVC开发基础学习笔记(3):Razor视图引擎、控制器与路由机制学习
[出处]http://www.cnblogs.com/edisonchou/p/3923475.html 关于机制的介绍,讲得不错,觉得可以参考着学习一下 1.1 千呼万唤始出来的MVC3.0 在MV ...
- Razor 视图引擎学习
Razor 视图文件扩展名为 cshtml 或者 vbhtml , 现在主要讨论 cshtml. @ 定义 Razor 语句 1 2 3 4 5 <h2> Name: @Model.Nam ...
- Razor视图引擎 语法学习(一)
ASP.NET MVC是一种构建web应用程序的框架,它将一般的MVC(Model-View-Controller)模式应用于ASP.NET框架: ASP.NET约定优于配置:基本分为模型(对实体数据 ...
- MVC学习三:Razor视图引擎
1.Razor视图引擎,主要是把View的HTML代码编译到View视图类对象中 转载于:https://www.cnblogs.com/WarBlog/p/7132611.html
- ASP.Net MVC开发基础学习笔记:三、Razor视图引擎、控制器与路由机制学习
一.天降神器"剃须刀" - Razor视图引擎 1.1 千呼万唤始出来的MVC3.0 在MVC3.0版本的时候,微软终于引入了第二种模板引擎:Razor.在这之前,我们一直在使用W ...
- Razor视图引擎、控制器与路由机制学习
1.1 千呼万唤始出来的MVC3.0 在MVC3.0版本的时候,微软终于引入了第二种模板引擎:Razor.在这之前,我们一直在使用WebForm时代沿留下来的ASPX引擎或者第三方的NVelocity ...
最新文章
- Nginx动态路由的新姿势:使用Go取代lua
- Springboot 常见请求方式
- 高端企业级存储IBM XIV访谈视频
- Oracle 数据库基础学习 (六) 子查询
- kotlin 构造函数_Kotlin程序| 主要构造函数示例
- 在线颜色拾取器 - 资源篇
- 2019.03.17 14:58
- 一位程序员的十年工作总结,值得每位互联网人看
- 三、Oracle 查询+where条件
- flash 绘图API:绘制秀曲线图形
- PDF目录书签生成器 PDG
- (原创) 学生宿舍管理系统(简易版) C语言
- 可见光通信系统的调制效率
- gcc命令行选项说明
- iOS开发中extension的用法(延展)
- 文件存储、块存储还是对象存储?
- ceph详细的理论知识
- 计算机命中率的概念,命中率
- Elasticsearch文档CURD操作
- android虚线边框_android 绘制虚线效果
热门文章
- 09最短小说:意见统一
- 把变量赋值给寄存器_用C语言对DSP的寄存器进行操作?
- 带宽与码元的关系_带宽、速率(波特率、比特率)和码元宽度简述
- 0基础学习数据分析必须掌握的技能有哪些?
- centos 找不到php.ini,centos找不到php.ini文件
- php获取请求路径_如何获取php.ini文件路径?
- oracle数据库如何写翻页_ORACLE数据库分页查询/翻页 最佳实践
- linux添加域名证书,在Linux服务器上手动安装免费的Let's Encrypt域名证书 - 乐道主机...
- linux终端运行pytorch,Linux虚拟机测试pytorch运行
- oracle加as报错,【Oracle】-【sqlplus / as sysdba登录报错问题】-新用