微软给asp.net 带上MVC的翅膀,很大一个原因就是为了满足大中型软件开发的工程化和规范化。而要实现软件的工程化和规范化,重用就是软件工程中很大一个要求。所以在asp.net MVC中,微软也尽可能的提供了各种重用。在View层面上,Master Pages 、Partials 和 Child action就是三个实现HTML重用的利器。理解清楚什么时候使用什么控件,对初学者摸索来说非常重要。
第一、Master Page
这个基本上没有什么好说的,和在传统的Web Form中使用Master page用法和效果基本上一样。主要应用的范围为:应用程序多个页面风格一致的情况下,使用Master Page来带来重用,比如一般的网站的头部、脚部以及大体框架都是一样的,所以可以把相同的坐在Master page中。我的理解为Master Page的重用一般在大的层面上进行重用。
第二、Partials重用
Partials只有一个ascx文件,而没有相应的Controller中得Action与之相对应,而调用数据也是通过全局数据或者从被调用页面中获得数据。在我看来他是一个轻量级的HTML片段的重用。因为没有与之相对应的Action,所以不可能自主去获得数据。一般应该用在HTML代码较多,而需要调用的代码较少,或者为全局变量调用的时候进行使用。如果有复杂的调用,个人认为很难胜任,比如一个网站的首页有多个类型的内容调用,如果使用Partials,那么可能会非常的痛苦。
第三、Child actions
Child actions 既有Controller中的action又有ascx的HTML与之配合使用,可见这是一个重量级的利器,可以自主调用方法,获得数据并且输出数据。有点类似与Web Form中的用户控件了。只要是需要重用的地方都可以重用,但是因为配合action使用,相对来说比较笨重,一般用在需要独立读出数据的情况下进行使用,而且可以在调用的时候通过部分参数的输入来定制数据内容,比如新闻分类列表等。
第四、MVC控件
MVC控件一般通过扩展HtmlHelper的方法来使用,通过扩展后,可以增加HTML中的样式,个人理解一般用在单纯的HTML效果或者 Ajax效果方面的HTML片段的重用。而HTML片段的重用相对重用度比较高。完全可以打包成dll,在需要的时候进行直接引用使用。以上三种一般是在单一项目中的重用,而MVC控件则可以跨项目重用。所以如果某个项目中经常使用的片段可以通过上述三种方法进行封装重用,而如果某些东西可能多个项目通用,则可以自定义MVC 控件。同时在项目中如果遇到需要书写大量HTML或者特效的时候,可以考虑从网络上搜索一些MVC控件。