Razor视图引擎

来源:互联网 发布:和知乐差不多的小说家 编辑:程序博客网 时间:2024/05/16 14:03

类似于传统ASP.NET的母版页、用户控件机制

在呈现类似用户控件的内容时(说白了就是用户控件),可以使用RenderPage辅助类,例如:

 

而所谓的“用户控件”其实就是一个没有<html><head><body>的裸页,将经常会使用的一部分逻辑或者内容分离出来以达到复用。

母版页可以提供统一的外观,按照原来的思路,一般会在母版页中插入ContentPlaceHolder控件来指明哪部分是要被使用页来替换内容的,在Razor中,它不叫ContentPlaceHodler,叫RenderBody。

不同的时,传统ASP.NET可以在母版页中插入多个ContentPlaceHolder,而RenderBody只能有一个。其实,类似ContentPlaceHolder,Razor中也提供RenderSection来实现。

先说RenderBody。当我们在母版页中的某个位置写了@RenderBody()后,接下来在使用母版页时,只需在页面的顶部写入:

@{ LayoutPage = "MasterPageLocation"; }, 这样,接下来的内容会自动填充到母版页RenderBody()对应的位置:

MasterPage:

 

Page:

使用RenderSection时需要指定Section片断的名字, 我们可以在母版页中的相关位置上写上@RenderSection("name"),然后在使用母版页的页面中声明类似的Section,即:@section header {/*HTML or other*/},具体如下:

文件上传与Image处理

对于常用的文件上传功能,Razor做了封装,让我们使用更加的方便,只需简单的在页面上使用FileUpload类的相关方法即可,配合Razor的清爽语法,可读性非常高:

 

配合C#4.0的默认参数,一个文件传的功能就实现了(其实我觉得更像是一种使用控件)生成的HTML如下:

 

1<form action="" enctype="multipart/form-data" method="post">2<div id="file-upload-all-files">3<div><input name="fileUpload" type="file" /></div>4</div>5<div id="file-upload-buttons"><input type="submit" value="Upload" /></div>6</form>

 

对于更加常见的Image,Razor也做了相应的封装:WebImage,常用的一些方法如下:

1WebImage.Resize(); //改变图像大小2WebImage.FlipXXXX(); //图像旋转,XXXX对就旋转方向,例如Vertical垂直翻转,Horizontal水平翻转,Left,Right……3WebImage.AddTextWatermark(); //在图像上加入文字水印4WebImage.AddImageWatermark(); //在图像上加入图像水印视频

对于常见的视频需求,Razor提供了简化手动配置视频标签的辅助类:Video。当下最为流行的网页视频播放无非3种:Flash,Windows Media Player,Silverlight,至于HTML5的先天支持那是后话。Video充分利用C#4.0默认参数的威力,使得生成一个视频标签也是手到擒来:

 

至于Windows Media Player和Silverlight就不多说了,大同小异,有兴趣可以研究Video.MediaPlayer(),Video.Silverlight()

原创粉丝点击