首页 / 网页编程 / ASP.NET / ASP.NET WebForm页面内容输出的细节分析
        
            ASP.NET WebForm页面内容输出的细节分析2011-08-06 博客园 老赵老赵前日的这篇博文讲的是有关ASP.NET WebForm页面内容输出方式的内容。尽管这个话题很老,不过 在ASP.NET MVC中同样适用,而且适用的情况有增无减,因此十分重要。希望这篇文章能够帮助你更好的 理解ASP.NET WebForm页面内容输出的细节。这次我们谈的话题是“WebForm页面上输出内容的方式”。这其实是一个非常旧的话题了,因为本文的 内容甚至可以运用于ASP.NET 1.1之上。不过这个话题的适用范围很广,因为即使是目前最新的ASP.NET MVC框架,它的默认视图引擎依旧是基于ASP.NET WebForm的(如Page,Control,MasterPage)。甚至说 ,由于ASP.NET MVC框架的特性,我们会遇到更多在页面上“直接输出”内容的情况。因此,这个话题在 ASP.NET MVC应用中可能由为重要。那么就拿ASP.NET MVC举例吧。假如,我们在页面上生成一个Partial View,我们可以这么做:<
  % Html.RenderPartial("MyPartialView"); %
>然而,在前一篇文章中我们提出了一个新的方法Partial,它返回一个字符串,它可以在页面上这样使 用:<
  %= Html.Partial("MyPartialView") %
>一个aspx页面会被编译成Page类的一个子类,这个子类的主要“功能”是覆盖了基类的Render方法:public
class
  MyPage : Page
{
protected
override
void
  Render(HtmlTextWriter writer)
     {
         ...
     }
}我们平时在aspx页面中编写的大量内容,其实都会变成操作writer的代码。例如使用writer.Write方 法输出内容,或者把writer交给子控件的Render方法用于生成内容。那么,以上两种页面上的标记分别又 是如何操作writer的呢?<
  %= expression %
>首先是< %= %>标记。< %= %>标记内包含的是一个“表达式”,因此它不能以分号结尾 。表达式内部的数据就会直接写入writer。例如这样的标记:<
  %= DateTime.Now %
>在编译过后就成为:writer.Write(DateTime.Now)