Fire my passion

Anything with my most passion……
ASP.NET MVC - View

 首先,我要说的是,ASP.NET MVC的这个View并不是简单的Page而已,它实现了接口IView

public interface IView {
        
void Render(ViewContext viewContext, TextWriter writer);
    }

在ASP.NET MVC中,自带了一个默认的View那就是WebFormView

然后呢,在web请求到达controller,并且由controller返回ViewResult之后的操作,大概是这个样子的:

  1. ViewResult本身执行 ExecuteResult方法。这个方法是ActionResult接口的方法,ViewResult是实现这个接口的一个类。
  2. 找到相应的View
  3. 构造ViewContext
  4. Render
  5. 创建ViewPage
  6. 设置Layout位置

ViewPage(System.Web.Mvc.ViewPage)和之前的WebPage(System.Web.UI.Page)主要的区别是,的唯一的也是最重要的功能就是呈现页面。摒弃了WebPage的ViewState,PageEvents,Control层级关系。从代码看,ViewPage实现了IView接口,而这个接口仅有一个方法,那就是Render。可见其功能已经很确定了。

ViewEngine在MVC中是用来确定View的。也就是说,它负责找到特定的视图。默认的那个ViewEngine是WebFormViewEngine。如果呢,我们想要换一个视图,不想继续用aspx页面了,那么就需要重新构造一个ViewEngine,并注册到系统里。

Layout就相当于是MasterPage,不同的是,它没有了PostBack机制和表单提交机制。也就是说,它只能够为ViewPage布局。

ViewData之前已经说过一些了,View用它来呈现页面。不过,在这里要说的就是,一个View就只是对应一个ViewData,如果在一个View中有其他的PartialView,那么它们之间的ViewData是不共享的,虽然默认情况下内容是相同的。

View还有一些其他的知识,比如:BindAttribute,ModelState 等等。以后再研究了,感觉第一次遇到这么多东西,总是有一点混乱。

继续了……

posted on 2009-10-22 17:00  everx  阅读(300)  评论(0编辑  收藏  举报