ASP.NET WebForm页面内容输出的细节分析

老赵前日的这篇博文讲的是有关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)

时间: 2024-12-31 23:19:29

ASP.NET WebForm页面内容输出的细节分析的相关文章

ASP.NET WebForm页面内容输出方式

这次我们谈的话题是"Web Form页面上输出内容的方式".这其实是一个非常旧的话题了,因为本文的内容甚至可以运用于ASP.NET 1.1之上. 不过这个话题的适用范围很广,因为即使是目前最新的ASP.NET MVC框架,它的默认视图引擎依旧是基于ASP.NET WebForm的(如Page,Control,MasterPage).甚至说,由于ASP.NET MVC框架的特性,我们会遇到更多在页面上"直接输出"内容的情况.因此,这个话题在ASP.NET MVC应用中

羽毛:分享八大网站页面内容建设的细节

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 内容为王,外链为皇.这话已经被说滥了,都说内容为王,那么如何造就这个王呢?特别是一些朋友刚开始做站,程序美工不懂,seo也不会,那初级能做的是只有内容.而就这看似很普通的内容建设却困扰着大大小小站长,网站运营者. 一般,我们在做页面内容建设可以注意以下八大方面: 一.做内容必须统筹,有规划的来做.不能今天突然想到啥就添加啥,一方面这样迟早有一

asp.net WebForm页面间传值方法

asp.net|web|页面 ASP.NET WEB FORMS 给开发者提供了极好的事件驱动开发模式.然而这种简单的应用程序开发模式却给我们带来了一些小问题,举个例子,在传统的ASP应用程序中,你能够通过POST方法很容易的把一个值或多个值从一个页面传送到另一个页面(request()/request.form()/request.querystring()),用同样的方法在ASP.NET中实现有点麻烦.在这里,通过其他方式来解决这种情形.ASP.NET为我们提供了三种方式,一种是可以通过用Q

asp.net WebForm页面间传值方法_实用技巧

ASP.NET WEB FORMS 给开发者提供了极好的事件驱动开发模式.然而这种简单的应用程序开发模式却给我们带来了一些小问题,举个例子,在传统的ASP应用程序中,你能够通过POST方法很容易的把一个值或多个值从一个页面传送到另一个页面(request()/request.form()/request.querystring()),用同样的方法在ASP.NET中实现有点麻烦.在这里,通过其他方式来解决这种情形.ASP.NET为我们提供了三种方式,一种是可以通过用QueryString来传送相应

asp.net WebForm页面间传值方法_基础应用

ASP.NET WEB FORMS 给开发者提供了极好的事件驱动开发模式.然而这种简单的应用程序开发模式却给我们带来了一些小问题,举个例子,在传统的ASP应用程序中,你能够通过POST方法很容易的把一个值或多个值从一个页面传送到另一个页面(request()/request.form()/request.querystring()),用同样的方法在ASP.NET中实现有点麻烦.在这里,通过其他方式来解决这种情形.ASP.NET为我们提供了三种方式,一种是可以通过用QueryString来传送相应

asp.net webform 页面出现浏览器已经停滞工作【求助】

问题描述 我用asp.netajax组件做web用户控件.ascx..在浏览器浏览,点击页面的button控件或长时间不动页面,ie,360浏览器就会出现浏览器已经停滞工作.这是什么原因?急求大家.谢谢 解决方案 解决方案二:你的请求时间过长.超时了呀,有可以是哪里有死循环了吧解决方案三:应该是死循环,查看下代码吧.解决方案四:肯定不是死循环.我那个控件只有数据绑定控件

asp.net中页面格式化输出日期

最简单的在页面中的写法  代码如下 复制代码 %# Eval("Fenddate", "{0:yyyy/MM/dd}")%> 最初我是在程序页面中这样写的  代码如下 复制代码 string sDate = DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString() + DateTime.Now.Day.ToString() + DateTime.Now.Hour.ToString() + Date

asp.net webform页面状态自动加载和保存方法 (1/2)

首先定义一个特性(attribute).我会将这个特性放到需要自动加载和保存的属性上,以便将这些需要处理的属性从所有的页面属性中筛选出来,做进一步处理.这个特性的定义如下: /// <summary> /// 自动保存属性. 能够实现字段或属性值的自动保存和加载. 该属性只在非静态字段或属性上才能生效. /// </summary> /// <remarks> /// 自动保存属性. 在页面类的属性上面加上该属性. 可以使得该字段或属性能够自动保存和自动加载. ///

asp.net webform页面点击按钮动态添加其他控件,添加控件少于点击次数(页面刷新次数),

问题描述 遇到需求,不用js实现,只用服务器控件,在服务器端实现点击按钮动态添加其他控件.结果由于page_load在按钮event之前执行,这样点击按钮页面刷新时,第一次不会生成控件.最后就是点击次数比生成控件多一个,必须在刷新一次,才能将最后那个控件生成.下面是代码:protectedstaticList<DynamicDropDownList>_dddlControlList=newList<DynamicDropDownList>();protectedstaticList