asp.net 代码隐藏的编码模型

一.内联代码与代码隐藏
代码隐藏模型相对内联代码的优势:

1.逻辑代码和html的分离,使得我们可以更专注于业务逻辑的处理。
2.使业务逻辑更加清晰。
3.可以将后置代码编译成dll,使得程序更加安全。

二.后置代码与页面的关系和机制
与代码后置模型相关的三个类。

1.基页面类 page类

.net类库中的page类,page类定义了页面的基本功能。例如:允许存放其他控件、呈现html、提供对asp.net对象的访问(如request、response、session等)。

2.代码后置类
在编译的时候,asp.net利用了分部类的神奇功能把一些额外的代码附加到代码后置类中。

在附加的这部分代码中,把页面上所有控件定义成protected类型的变量,从而使得可以在代码后置类中能够访问这些控件。

3.页面类

asp.net编译器在编译的时候会创建另一个类代表实际的aspx页面,这个类继承自代码隐藏类。
这个类中包含了初始化控件和呈现html的代码。当接受到这个页面请求时,asp.net实例化这个类。
这三各类的关系如下图:

三.代码隐藏文件与页面的连接
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
代码隐藏文件与页面的连接非常简单,在aspx页面顶端的这样一句话就完成了他们之间的连接。
codeFile指定了后置代码的文件,Inherits指定了已经编译的后置代码的类名。

四.控件与页面变量的连接

了解后置代码类和页面类的关系以后,控件如何和页面变量连接的理解就简单多了。
比如:
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
asp.net编译器都会附件如下的变量声明到你的代码后置类中,当然这些声明是不可见的:

protected System.Web.UI.TextBox TextBox1;
这样就能够在后置代码类中访问页面控件标签了。
五.事件与事件处理程序的连接
.net当中事件机制是一种非常重要的机制,这一部分放到后面慢慢弄清楚。

(0)

相关推荐

  • ASP.NET的事件模型(很适合学习的文章)

    在Default.aspx的页面中第一行是一条页面指令: <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="AspxEventsModel._Default" %> 其中CodeBehind属性指定代码隐藏页面的名称,Inherits指定所属的命名空间和类,AutoEventWireup属性是可以

  • ASP.NET中实现Form表单字段值自动填充到操作模型中

    我们知道ASP.NET MVC有个强大的地方就是Form表单提交到action的时候,可以直接将Form的参数直接装配到action的参数实体对象中 比如 复制代码 代码如下: action方法 Register(UserModel userModel) { ............................. } 在提交表单的时候,会自动讲表单里面的字段封装到对应的UserModel字段里面 那么 WebForm里面可不可以也紫将呢? 因为每次都要去获得数据,优秀的程序员应该要学会代码封

  • asp.net不用设置iis实现url重写 类似伪静态路由

    程序要调整的部分只有两块.一是web.config文件.二是链接地址.所需urlrewrite.dll 首先下载URLRewriter:http://download.microsoft.com/download/0/4/6/0463611e-a3f9-490d-a08c-877a83b797cf/MSDNURLRewriting.msi 下载安装后再bin目录下找到URLRewriter.dll文件 好了开始实施.第一步:将urlrewrite.dll下载到你的web程序目录里去.哪都行.我是

  • 为ASP.NET MVC及WebApi添加路由优先级

    一.为什么需要路由优先级 大家都知道我们在Asp.Net MVC项目或WebApi项目中注册路由是没有优先级的,当项目比较大.或有多个区域.或多个Web项目.或采用插件式框架开发时,我们的路由注册很可能 不是写在一个文件中的,而是分散在很多不同项目的文件中,这样一来,路由的优先级的问题就突显出来了. 比如: App_Start/RouteConfig.cs中 routes.MapRoute( name: "Default", url: "{controller}/{actio

  • ASP.NET MVC3关于生成纯静态后如何不再走路由直接访问静态页面

    要解决这个问题,我们需要先了解ASP.NET应用程序的生命周期,先看下面作者整理的一张图片: 从图中我们可以清楚的看到:通用IIS访问应用程序时,每次的单个页面URL访问时,都会先经过HttpApplication 管线处理请求,走过BeginRequest 事件之后才会去走路由访问具体的Controller和Action,最后结束的时候会请求EndRequest事件.下面用一张图来表示这个顺序: 注意图中标示的红色部分就是我们要实现的部分,实现如下:1 新建MyHandler.cs 复制代码

  • asp.net mvc路由篇 如何找到 IHttpHandler方法介绍

    学习是使用asp.net已经有很长一段时间了,现在就来分析一下mvc的整过过程吧.个人计划写一个mvc系列的博文,仅从源代码的角度来分析mvc.在接触mvc时我们一定会经历路由,那么路由这东东是怎么搞出来的啊.在我们的web.config中有这么一句: <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 看来路由是它咋

  • 浅析ASP.NET路由模型工作原理

    ps:这是针对ASP.NET4.5版本的,好像在最新的5.0版本中加入了OWIN,彻底解耦了和Web服务器的耦合,我还没有研究过,不敢妄言4.5的模型适用5.0. action*0x1:大话ASP.NET模型 首先我们先来了解下一个请求的悲欢离合的命运,看看它的一生中所走过的蜿蜒曲折的道路.如下图所示: 在如上所示的风光旖旎的画卷中,我们可以看到一个"请求"从客户端浏览器出发,经历千山万水到达服务器,服务器的内核模块的HTTP.SYS热情款待了它,对它进行简单的修饰之后,就和它依依惜别

  • ASP.NET Web API教程 创建域模型的方法详细介绍

    添加模型 There are three ways to approach Entity Framework: 有三种方式使用实体框架: Database-first: You start with a database, and Entity Framework generates the code. Database-first(数据库先行):从一个数据库开始,然后实体框架生成相应代码. Model-first: You start with a visual model, and Enti

  • ASP.NET MVC5 网站开发框架模型、数据存储、业务逻辑(三)

    前面项目的层次和调用关系都说明了,关系如下图 采用三层架构的时候,研究过BLL层的必要性,觉得业务逻辑完全可以在controller里实现,没有必要单独做一个项目,另一个分层多了会影响性能.后来我还是把业务逻辑独立出来,原因如下: 业务逻辑写进controller里代码看着比较混乱,时间久了代码容易理不清. 在controller里直接写逻辑重复代码会不较多,开发效率低. 分项目有利于代码重用,有时候可以直接拿到其他项目中稍作修改就可以用. 对于性能我觉得分层多了肯定会有影响,但是不会很大.现在

  • asp.net 代码隐藏的编码模型

    一.内联代码与代码隐藏 代码隐藏模型相对内联代码的优势: 1.逻辑代码和html的分离,使得我们可以更专注于业务逻辑的处理. 2.使业务逻辑更加清晰. 3.可以将后置代码编译成dll,使得程序更加安全. 二.后置代码与页面的关系和机制 与代码后置模型相关的三个类. 1.基页面类 page类 .net类库中的page类,page类定义了页面的基本功能.例如:允许存放其他控件.呈现html.提供对asp.net对象的访问(如request.response.session等). 2.代码后置类 在编

  • ASP.NET Core MVC中的模型(Model)

    目录 1.模型绑定 2.使用模型绑定 3.通过特性自定义模型绑定行为 4.从请求主体绑定格式化的数据 5.模型验证 6.自定义验证 7.客户端验证 8.远程验证 1.模型绑定 ASP.NET Core MVC 中的模型绑定将数据从HTTP请求映射到操作方法参数.参数既可以是简单类型,也可以是复杂类型.MVC 通过抽象绑定解决了这个问题. 2.使用模型绑定 当 MVC 收到一个HTTP 请求时,它会将其路由到一个控制器指定的操作方法.它基于路由数据来决定运行哪个操作,然后将值从HTTP请求绑定到操

  • asp.net+js实现批量编码与解码的方法

    本文实例讲述了asp.net+js实现批量编码与解码的方法.分享给大家供大家参考,具体如下: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional/

  • ASP.NET没有魔法_ASP.NET MVC 模型验证方法

    在前面的文章中介绍了用户的注册及登录功能,在注册用户时可以通过代码的形式限制用户名及密码的格式,如果不符合要求那么就无法完成操作,如下图: 该功能的原理是Identity基于的Entity Framework组件在添加用户之前对用户提交数据进行校验后给出的错误信息. 数据校验功能在每一个软件系统中都是非常必要的,为了避免用户输入无效或非法数据导致的系统错误,需要在数据进行处理或持久化之前对其进行验证确保数据的正确.有效性. 本文将从以下几点来介绍ASP.NET MVC中的模型验证机制: ● 输入

  • ASP.NET Core使用EF创建模型(必需和可选属性、最大长度、并发标记、阴影属性)

    目录 1.必需和可选属性 1.1约定 1.2数据批注 1.3Fluent API 2.最大长度 2.1约定 2.2数据批注 2.3Fluent API 3.并发标记 3.1约定 3.2数据注释 3.3Fluent API 4.时间戳/行版本 4.1约定 4.2数据注释 4.3Fluent API 5.阴影属性 5.1约定 5.2数据注释 5.3Fluent API 1.必需和可选属性 如果实体属性可以包含null,则将其视为可选.如果属性的有效值不可以包含null,则将其视为必需属性.映射到关系

  • ASP.NET Core使用EF创建模型(索引、备用键、继承、支持字段)

    目录 1.索引 1.1约定 1.2数据批注 1.3Fluent API 2.备用键 2.1约定 2.2数据注释 2.3Fluent API 3.继承 3.1约定 4.支持字段 4.1约定 4.2数据注释 4.3Fluent API 4.3.1控制何时使用字段 4.3.2没有属性的字段 1.索引 索引是跨多个数据存储区的常见概念.尽管它们在数据存储中的实现可能会有所不同,但也可用于基于列(或一组列)更高效地进行查找. 1.1约定 按照约定,将在用作外键的每个属性(或一组属性)中创建索引. 1.2数

  • ASP.NET Core 6.0 基于模型验证的数据验证功能

    目录 1 前言 1.1 数据验证的场景 1.2 本文的脉络 2 模型验证 2.1 介绍 2.2 基本使用 (1)自定义模型 (2)控制器代码 (3)测试 2.3 内置特性 3 自定义数据验证 3.1 介绍 3.2 前置准备 3.3 方案1:替换工厂 3.4 方案2:自定义过滤器 (1)自定义过滤器 (2)禁用默认过滤器 (3)启用自定义过滤器 3.5 测试 3.6 总结 4 源码解读 4.1 基本介绍 4.2 MvcServiceCollectionExtensions 4.3 ApiBehav

  • python对html代码进行escape编码的方法

    本文实例讲述了python对html代码进行escape编码的方法.分享给大家供大家参考.具体分析如下: python包含一个cgi模块,该模块有一个escape函数可以用来对html代码进行编码转换 import cgi s1 = "Hello <strong>world</strong>" s2 = cgi.escape(s1) assert s2 == "Hello <strong>world</strong>"

  • 简单的asp采集代码教程

    采集开始 第一步是分析要采集的页面. 使用浏览器打开要采集的页面(如:http://sports.sina.com.cn/k/2008-09-15/04593948756.shtml,你可以其他页面),打开后,点击右键,查源文件. 第二步,找到要采集的内容所在位置. 假如我要采集这个页面上的标题和内容所在的位置: 标题在<h1 id="artibodyTitle" style="color:#03005C;">和</h1>之间 内容在<

  • ASP程序代码执行时间统计类

    第一次写ASP类,实现功能:分段统计程序执行时间,输出统计表等. 复制代码 代码如下: Class ccClsProcessTimeRecorder '程序作者:明月星光 '作者主页:http://www.5iya.com/blog 'http://www.kuozhanming.com 'ASP程序代码执行时间统计类 Private ccInti,ccIntNonceTime,ccIntDecimal   Private ccIntStartTime,ccIntEndTime,ccIntNow

随机推荐