Mvc 3 中的分部视图

    说到asp.net MVC,我相信很多开发者都会和我一样,赞扬一番,把我们开发者的开发速度又可以提高,并且可以随意的控制生成的html,这应该是Mvc时代如果到来的话,最可能使它成功的原因了。但是赞扬归赞扬,既然他是一种开发模式,我们必须要学习,而且要好好学习。

元旦几天假让我放松了一下,今天正式回归正常,开始我的技术之旅。今天探讨一下Mvc中的分部视图。

提到分部视图,我相信大家会想到和web form时代的对应物ascx分部控件,我们在Mvc时代可以更加轻松的控制分部视图。

要说明分部视图,我们先来讨论一下分部视图可以带给我们的优点:

  1. 分部视图可以使系统插件化 。我现在非常推崇一个原则,就是可以分离的东西绝对不要让他们在一起,因为只有每个功能模块都是单独的,我们才可以在其他位置重用它。
  2. 分部视图还可以带来一个优点,就是分工合作。 现在是一个合作的时代,没有任何一个人可以单独完成规定的任务而不与别人合作,除非是牛人例外。分部视图可以带给我们开发不同模块中的分工合作。
  3. 分部视图还有一个在Mvc时代的优点,就是实现简单。我自从学习使用Mvc以后,我基本上就很少写web form的代码了,因为我感觉没有Mvc书写的那么流畅。html.partial(partialName)就可以显示一个分部视图的页面。


简单的叙述了一下优点,既然我们能发现优点存在,那么我们就想在实际项目中更好的使用它,毕竟程序员都追求懒,一段代码,三句可以搞定,绝对不会写三句半,当然最小化原则也是我们代码优化的最终目的。

那么究竟在Mvc中有哪些可以实现分部视图的功能呢?以及我们要注意点什么呢?

  • Html.Partial(partialName)和html.RenderPartial(partialName) 就是首选。 其实这两个方法我们可以指定任何的.cshtml文件,不一定只是分

    部视图。大家来回忆一下分部视图和视图的区别在哪里?就是视图有head、body标签,可以定义js,可以指定母板页,但是在我们用Vs右键添加

    分部视图的时候,我们会看到只是一些基本的html标签,没有任何的head、body,但是这不等于我们不可以添加,所以说partialName可以是任

    何的视图文件。但是我们最好是创建分部视图,因为我们最终是要把这些分部视图合并成为一个页面,如果只是分部视图的html标签,那么在整

    体页面中html标签就会显得很干净。

    另外,我们不要在分部视图中定义或者引用css以及js。如果需要我们在整体页面中定义或引用。原因有2:1是我们的分部视图文件和整体页面的

    路径可能不在同一个目录下,那么会造成找不到css或js文件的情况。2就是对整体页面的html代码是一种伤害。

  • html.Action和html.RenderAction()方法也可以用来作为分部视图使用

具体使用方式我想就不需要细说了,大家对htmlHelper都会非常熟悉,因为常用嘛。

这段时间我在完善仿照博客园的问题,就大量的使用到了分部视图,现在来总结一下,让后来的学习者少走一点弯路。

  1. 如果可以,尽量使用母板页,这样可以很好的控制网站的样式。
  2. 采用单独的css文件,单独的js文件,尽量不要在分部视图中定义样式,而是在整体页面中。
  3. 分部视图的html标签应该尽可能的少,除了要显示的内容之外,不要有任何杂质存在。样式css、js等在整体页面添加。
  4. 如果可以,尽量采用html.partial(partialName)或html.RenderPartial(partialName)的方式,而不要用html.Action来作为分部视图的方式,因为这种方法会和控制器交互。
  5. 对分部视图的传值尽量采用Model的方式进行,如果一个分部视图需要传递两个参数,那么我建议你分成两个分部视图。
  6. 采用分部视图会对整体页面的样式调整带来困难,所以我建议先整体做出页面,然后再分成不同的分部视图。
  7. 过多的分部视图会增加服务器的延迟,所以分部视图的控制要得当,我建议控制在10个以内吧,如果服务器允许,更多也是可以的。
  8. 要注意分部视图的标签id的命名,最好采用固定的要规则的命名方式,尽量减少冲突的发生,毕竟同名的标签存在会对程序造成隐患。

我相信,每天进步的您,最后一定有一个好的未来。

posted @ 2013-01-05 21:29  baidixing  阅读(16132)  评论(5编辑  收藏  举报