【基础知识】ASP.NET[基础二(aspx)]
1、cs可以调用aspx中的runat=server控件,aspx中也可以访问测试中定义的字段、函数,还可以编写复杂的C#代码,for等所有C#代码都可以写在aspx中(不推荐这样写);
2、把代码写到aspx页面中
前面 <%=UserName %> <%=SayHello(); %> <%if(UserName == “aaa”){ UserName = “bbb”;}%> 后面
在当前位置输出表达式的值的时候使用<%=UserName %> ,不可丢掉=,相当于在当前位置调用Response.Write(UserName);
使用的函数、代码相当于在这个位置调用函数、执行代码。注意aspx中调用cs的只能是非私有成员(非private修饰-in为继承关系)
<% %>中的代码是运行在服务器的,是C#语法,在服务器运行完成才输出到浏览器,其他部分是运行在浏览器前端的,是html、JavaScript语法。
前台文件和后台文件在运行的时候根本就不是一个类,是两个分开的类。前台文件类继承于后台类文件。
3、aspx、cs、dll(程序集)的区别
程序集(.exe .dll):就是一个项目中所有代码都编译到一个文件里。
表现层(服务员)---业务层(厨师)---数据层(采购员)
添加引用:
表现层(UI):添加业务层(BLL)引用
业务层(BLL):添加数据层(DAL)引用
UI、BLL、DAL都要添加实体层(MODEL)。
Dll:反编译出来会生成两个类:一个是public class FirstForm(后台文件类),另一个是public class firstform_aspx(前台文件类)。
当网站运行的时候是运行的前台文件类,因为前台文件类继承后台文件类,因此网站运行的时候还是会运行后台文件类。
Response.Write(this.GetType().Assembly.Location +"<br/>");
//获得dll文件在资源管理器中的地址
4、在前台的控件被加上runat=server就会在生成后台页面(父类)的对象(作为父类的变量编译进来)
5、前台类对象是如何结合后台方法生成整个HTML页面的方法的呢?
--被请求时,页面控件对象生成。
控件树负责组织整个页面的内容。(_BuildControlTree()--生成控件树的方法)
Html页面,childNodes在浏览器的dom树中,其实每个节点都有一个childNodes集合属性,用来保存当前节点的子节点。
控件树中
“呈现”---将服务器端控件类对象转成对应的Html代码。
页面类对象,通过控件树的方式,帮我们封装了整个页面的Html源代码和c#代码。(都封装到页面类对象的控件集合属性中,那么要生成页面的HTML代码的时候,只需要循环遍历整个控件树,并调用每个控件的_Render_方法获得每个控件的HTML代码,就可以拼成一个完整的页面HTML代码了。)
在page中添加Trace=”true”可以在页面中打印出页面的详细信息
6、服务器是如何通过浏览器的请求生成 html代码的?
1>浏览器和服务器交互是通过Socket
2>浏览器和服务器交互的语法是:Http协议
3>浏览器要和服务器交互的目的:获取服务器的资源(html,图片,js,css)
4>服务器要做的事情就是想尽办法,满足浏览器的需求。所以一旦浏览器的请求的是动态页面的时候,服务器就要创建页面类对象,并生成里面的方法,最后将生成的Html代码发回给浏览器。
7、编写登陆页面
1》为什么在cs文件中可以直接Response.Write(“123123”);输出信息,而不用context.Response.......
因为context上下文信息已经封装到Page类了。而cs又继承于Page类。
服务器中存在一个缓存取,页面信息的内容在输出到浏览器之前先存在缓存区中。
8、Request中的其他成员:
Request.UrlReferrer:请求的来源(*就是你从哪个页面过来的)【应用:防盗链】
Request.UserHostAddress:通过和浏览器通信的套接字的RemoteEndPoint(远程节点)拿到浏览器的IP地址
Request.MatPath(virtulPath):将虚拟的路径转换成网站物理路径
9、Response其他成员:
响应缓存输出:为了提高服务器的性能,ASP.Net向浏览器Write的时候默认并不会每Write一次都会立即输出到浏览器,而是会缓存数据,到合适的时机或者结束才会将缓存区中的数据一起发送给浏览器。
Response对象的主要成员:
Response.Flush():将浏览器的缓存发送给浏览器
Response.Clear():清空浏览器的缓存
Response.ContentEncoding:输出流的编码
.....
10、Server属性
【基础知识】ASP.NET[基础二(aspx)]的更多相关文章
- PHP丨PHP基础知识之PHP基础入门——函数「理论篇」
前两天讲过PHP基础知识的判断条件和流程控制,今天来讲讲PHP基础知识之PHP基础入门--函数! 一.函数的声明与使用 1.函数名是标识符之一,只能有数字字母下划线,开头不能是数字. 函数名的命名,须 ...
- day01<计算机基础知识&Java语言基础>
计算机基础知识(计算机概述) 计算机基础知识(软件开发和计算机语言概述) 计算机基础知识(人机交互) 计算机基础知识(键盘功能键和快捷键) 计算机基础知识(如何打开DOS控制台) 计算机基础知识(常见 ...
- 【干货】用大白话聊聊JavaSE — ArrayList 深入剖析和Java基础知识详解(二)
在上一节中,我们简单阐述了Java的一些基础知识,比如多态,接口的实现等. 然后,演示了ArrayList的几个基本方法. ArrayList是一个集合框架,它的底层其实就是一个数组,这一点,官方文档 ...
- mysql基础知识语法汇总整理(二)
mysql基础知识语法汇总整理(一) insert /*insert*/ insert into 表名(字段列表) values(值列表); --蠕虫复制 (优点:快速复制数据,测试服务器压力) in ...
- MySQL 基础知识梳理学习(二)----记录在页面层级的组织管理
1.InnoDB的数据存储结构 InnoDB中数据是通过段.簇.页面构成的. (1)段是表空间文件中的主要组织结构,它是一个逻辑概念,用来管理物理文件,是构成索引.表.回滚段的基本元素.创建一个索引( ...
- JAVA基础知识总结:十二
一.String类 字符串是一种特殊的对象,一旦被初始化就不能被改变了 字符串常量存储于常量池中 二.StringBuffer类 是一个字符串缓冲区,相当于一个容器 特点 a.可以对字符串进行增加和删 ...
- 《Java基础知识》一维,二维数组的申明和使用
为什么要使用数组: 因为不使用数组计算多个变量的时候太繁琐,不利于数据的处理. -------- 数组也是一个变量,是存储一组相同类型的变量 声明一个变量就是在内存中划出一块合适的空间 声明一个数 ...
- 基础知识 Asp.Net MVC EF各版本区别
原文:https://www.cnblogs.com/liangxiaofeng/p/5840754.html 2009年發行ASP.NET MVC 1.0版 2010年發行ASP.NET MVC 2 ...
- MYSQL基础知识和操作(二).png
- CSS基础知识之文本属性二三事
line-height 可以给某个元素指定一个不带单位的缩放因子,这样它的后代元素就会继承这个缩放因子,再根据自身的字号大小来计算自己的行高(line-height)值, body { font-si ...
随机推荐
- TensorFlow在win10上的安装与使用(二)
在上篇博客中已经详细的介绍了tf的安装,下面就让我们正式进入tensorflow的使用,介绍以下tf的特征. 首先tf有它独特的特征,我们在使用之前必须知晓: 使用图 (graph) 来表示计算任务, ...
- HDU 3449 Consumer (背包问题之有依赖背包)
题目链接 Problem Description FJ is going to do some shopping, and before that, he needs some boxes to ca ...
- sql server中的日期函数
DATEADD 在向指定日期加上一段时间的基础上,返回新的 datetime 值. 语法 DATEADD ( datepart , number, date ) 参数 (1) ...
- [转]双线性插值(Bilinear interpolation)
1,原理 在图像的仿射变换中,很多地方需要用到插值运算,常见的插值运算包括最邻近插值,双线性插值,双三次插值,兰索思插值等方法,OpenCV提供了很多方法,其中,双线性插值由于折中的插值效果和运算速度 ...
- Vue 项目添加 promise polyfill
1. 安装依赖 npm install es6-promise --save 2. 在 main.js 上面引入: import 'es6-promise/auto'
- SolrJ查询条件组合查询实现——(十六)
带查询条件的实现原理: 查询按钮被包在一个大表单,表单还有三个隐藏域,一个商品筛选,一个 价格,一个排序,每次点击查询时候清空三个隐藏域,就带着一个大条件去查询;点击下面的筛选条件时,给隐藏域的筛选条 ...
- ASP .Net Core系统部署到Ubuntu 16.04 具体方案
.Net Core 部署到Ubuntu 16.04 中的步骤 1.安装工具 1.apache 2..Net Core(dotnet-sdk-2.0) 3.Supervisor(进程管理工具,目的是服务 ...
- docker容器配置独立ip
一般安装docker后都会通过端口转发的方式使用网络,比如 “-p 2294:22” 就将2294抓发到22端口来提供sftp服务,这样使用起来没有问题.但端口号很难记忆,如果前边有nginx等抓发工 ...
- JAVA随笔(三)
私有是针对类的,而不是对象. static 函数,其实是类函数.之前一直不太理解每个类中的static main是什么意思,为什么main中不能直接调用非静态的变量:因为main是 类函数,不是属于某 ...
- 一篇文章读懂开源web引擎Crosswalk-《转载》
前言 Web技术的优势早已被广大应用开发者熟知,比如可与云服务轻松集成,基于响应式UI设计的精美布局,高度的开放性,跨平台能力, 高效的分发与部署等等.伴随着移动互联网的快速发展与HTML5技术的逐步 ...