初探Razor和WebMatrix
前天晚上,我在微软技术社区打算看看CodeRush的重构性以及用法,却发现了一样新的东西,名叫WebMatrix。
我是个爱尝新的人,就迫不及待的进行了安装,并开始根据微软社区的教程进行WebMatrix的学习。
经初步了解,WebMatrix确实能让Web网页开发变得更加简单,而其也所使用了一种新的视图引擎,名叫Razor。
虽然我也初步学过MVC的一些概念,View代表视图,对视图的认识我仅仅限于此。
在WebMatrix中,Razor语法使得程序更富有可读性,跟我们学习的面向对象编程语言很类似。
有点JavaScript的感觉,因为都是支持Var弱类型的,语法完全兼容C#,可以对比着学习。
其最明显的标志为@,既可以声明变量,也可以声明代码段,类比(<% %>).
下面就让我来介绍一下我自己初步学习Razor的一些用法。
1.变量声明
@varibleParm ---可以直接作为变量输出
2.代码段声明
@{
var db=Database.Open("MyDataBase");
var sqlQuery="select * from YaziTable";
var data=db.Query(sqlQuery);
}
以上代码声明了一段数据库查询代码
如果要输出查询的数据,比如说遍历数据
3. 遍历数据
@foreach(var row in data){
@row.ColumnName ---可以直接访问每一条记录的字段
//定制格式输出
}
下面让我们来看看WebMatrix的请求页面过程:
1.浏览器向服务器请求某个页面,例如movies.cshtml
2.服务器先检查目录下是否存在_PageStart.cshtml文件
该文件如果存在,则每次请求页面,都会先调用该文件。
该文件主要是告诉请求的页面布局的位置(其他用法尚未学),目前主要是Layout布局为主。
文件的呈现类似如下:
@{
Layout=“~/_siteLayout.cshtml”;
}
既告诉页面的布局应该去_siteLayout.cshtml文件中读取。
3.若存在,来到布局文件_siteLayout.cshtml
输出该文件中的内容,当碰到@RenderBody()时,则把movies.cshtml中的内容替换到@RenderBody()的位置并组合起来输出。
最后的输出内容,既原来的布局文件内容,加上请求的内容。A(START)+B(BODY)+A(END)模式。
4.页面呈现,传送组合的内容给浏览器并进行呈现。可以观察到,浏览器的地址的页面后缀名为CSHTML,而不是HTML。
以下为使用WebMatrix编写的页面,加上了CSS的效果,蓝色区域即为@RenderBody()替换的区域。
我们可以查看源代码,发现和普通的HTML文件一样,因为都是在服务器转换为HTML才输出到浏览器。
WebMatrix调试时,我选择的是IIS Express,轻量级的服务器,也可以选择IIS的。
在我初步的尝试之中,给我感触最深的是把页面的呈现内容以组合的模式组合起来。
比如说定制PageHeader和PageFooter,而把页面的中间内容分离出来,这样在日后维护过程中,可以只修改中间内容,而不需要整个改变。
我想,这应该称为“分离模式”,分分合合,最后总会组合在一起。
以前母版页的概念,很容易在WebMatrix中实现,更改的只是中间内容而已。
这只是我初探Razor和WebMatrix,还有很多待学习的地方,继续学习...