aspx与aspx.cs的关系
三种网页格式HTML、SHTML、ASPX比较

关于动态静态化页面(shtml)1 个评论先谈一下本文会用到的三种网页格式,分别是HTML、SHTML、ASPX。
它们各有特点:HTML即为本文的主角:静态页面。
如果浏览器从服务器上请求一个HTML页面,服务器把该页面原封不动地发送给浏览器。
因此它的反应速度是最快的,而且对于cpu、内存等等的要求比较低。
ASPX是目前比较流行的动态网页格式。
ASP .NET页面的扩展名为 .aspx。
如果浏览器请求的是一个ASP .NET页面,服务器在把它回送到浏览器之前会处理页面中的所有可执行代码。
动态网页的一个特点是信息交互、及时更新、页面文件少、开发速度比较快。
但是它的一个严重的问题是在访问量比较大,而服务器的配置和资源比较有限的情况下,一些频繁的读写数据库、程序逻辑等等,会使得服务器负担不起而当机。
因此对于访问量比较大的网站,网页静态化是一个比较可靠的解决方案。
但是静态页面重复的内容比较多,在信息量比较大的网站,全HTML可以说是无论对于开发者或者使用者,都是缺乏人性化的工作。
例如我有一个显示内容的页面,它有左右两块,右边是文章内容,可能是长时间甚至永远不会变动的,左边是包含公告、新闻等的一些导航,更新速度比较快。
那如果左边的公告有了新的内容,为了让每个页面的信息都准确,那所有的页面都要重新制作,这操作起来明显很不方便。
于是就有了SHTML的存在。
SHTML 的一个特点就是在服务器会做一定的预处理,使得它可以用include file的方式,把若干个文件包含进来。
例如上例的页面,可以拆分为a.html和b.html,然后用c.shtml把这两个文件包含进来,那在更新的时候只需要更新a.html,而b.html不需要更新,这样可以减少大量的制作工作。
可能动态网页就是根据这个而产生的。
在中,这是最基本的控件思想。
以下是c.shtml的页面代码:<div class=”contaier”><div id=”left”><!-- #include file=”a.html”--></div><div id=”right”><!-- #include file=”b.html”--></div></div>因此,对于,可以采用输出shtml页面的方式,动态生成静态页面,来解决性能问题。
.NET网页扩展名

文件扩展名是操作系统用来标志文件格式的一种机制。通常来说,一个扩展名是跟在主文件名后面的,由一个分隔符分隔。例如,网页的文件扩展名为.aspx,而HTML静态网页的文件扩展名为.htm或者.html。.aspx文件扩展名可使对页面进行处理。表1-3中列出了在中的一些常见的文件类型。
.browser
App_Browsers子目录
浏览器定义文件,用于标识客户端浏览器的启用功能。
.cd
应用程序的根目录或子目录
类关系图文件。
.compile
Bin子目录
预编译的stub(存根)文件,该文件指向相应的程序集。可执行文件类型(.aspx、.ascx、.master主题文件)已经预编译并放在Bin子目录下。
.asmx
应用程序的根目录或子目录
XML Web Services文件,该文件包含通过SOAP方式可用于其他Web应用程序的类和方法。
.aspx
应用程序的根目录或子目录
Web窗体文件,该文件可包含Web控件和其他业务逻辑。
.axd
应用程序的根目录
跟踪查看器文件,通常是trace.axd。
.csproj、.vbproj、.vjproj
Visual Studio项目目录
Visual Studio客户端应用程序项目的项目文件。
.disco、.vsdisco
App_WebReferences子目录
XML Web Services发现文件,用于帮助定位可用的Web Services。
.dsdgm、.dsport
.css
应用程序根目录或子目录,或App_Themes子目录
用于确定HTML元素格式的样式表文件。
.mdb、.ldb
ascx文件

aspx是IE直接访问的页面,而ascx是用户控件,一般是用来重用,比如有二个aspx页面,有一部分代码一样,所一样的提取出来做成ascx,就可以重用了.如果单纯N个aspx页,就只能复制,粘贴,要修改时,就晕了.ascx不能直接访问只能插入aspx页面呈现.向页眉导航,页脚每个页都有,所以做好用户控件然后每个页拖进去就可以了ascx即WebUserControl,和WindowsApplication中的UserControl作用类似,主要用于代码的复用,使用之前需要在页首加饮用。
模块化的开发机制也常用ascx作为功能载体。
用众多的功能模块(每个模块包含多个UserControl)合成一个网站。
一个aspx文件能同时调用cs和ascx文件吗?当然aspx 有自己的cs,它调用的ascx也有自己的cs就是说aspx的cs文件与它调用的ascx文件是没有关系的!他们可以同时使用!关于.ASCX的用法的问题。
一个webform 工程中,假设有10个页面,这10个页面中如果在页面的某个位置(比如第一个页面在左上角,第二个页面在右下角,第三。
第十位置都不重复)都有2个固定的控件(假设是一个textbox 和一个button),他们外观相同,但他们后台的业务逻辑处理都不相同,我能否使用.ASCX 实现吗?可以啊,让控件接收参数做不同处理即可。
.NET当中的DLL文件和ASCX文件的问题,是不是说在DLL文件或是ASCX文件中写画面,然后在ASPX文件中引用.那ASPX文件里可以不写任何关于画面的代码是吗?有例子吗,请高手指点.能有例子吗?有例子更详细些.谢谢,我是初学者.那ASPX里写什么?只是引ASCX?ASCX写画面,后台写代码的话,我觉得和直接在ASPX里写画面,后台.CS文件写代码没区别.可不可以在ASCX文件中只作画面,然后引到ASPX里,在ASPX里写后台操作?在你的ASCX文件中写HTML代码,在ASCX.CS文件中写后台逻辑。
RBAC的基本思想

RBAC的基本思想RBAC(角色访问控制)的基本思想可简单地用图1来表示,即把整个访问控制过程分成两步:访问权限与角色相关联,角色再与用户关联,从而实现了用户与访问权限的逻辑分离。
由于RBAC实现了用户与访问权限的逻辑分离,因此它极大的方便了权限管理。
例如,如果一个用户的职位发生变化,只要将用户当前的角色去掉,加入代表新职务或新任务的角色即可,角色/权限之间的变化比角色/用户关系之间的变化相对要慢得多,并且委派用户到角色不需要很多技术,可以由行政管理人员来执行,而配置权限到角色的工作比较复杂,需要一定的技术,可以由专门的技术人员来承担,但是不给他们委派用户的权限,这与现实中情况正好一致。
用户权限在.NET中的设计与实现利用.NET中的用户控件实现权限控制的基本思想是:根据角色访问控制(RBAC)的基本原理,给用户分配一个角色,每个角色对应一些权限,然后利用中的用户控件(UserControl)来判断该用户对应的角色是否对访问页面有访问的权力。
下面将从数据库设计、添加角色和用户控件的使用等三方面来阐述具体实现过程。
1、数据库中表的设计首先,在数据库中设计功能模块表、功能表和角色表等三个表。
(1)功能模块表为了管理好用户的权限,首先要组织好系统的模块,为此设计了一个功能模块表。
见表1。
(2)功能表每个功能模块所具有的子功能称为功能,如商品管理模块goods(属于功能模块的范畴)包含商品信息查询、商品信息更新、商品信息删除、商品定价信息查询以及商品定价信息更新五种功能,功能表的设计见表2。
上面提到的例子可以作为这样几条记录分别插入功能模块表和功能表。
insert into TModule values(0,\'商品管理模块\',\'goods\',5);insert into Tfunction values(0,\'商品信息查询\',\'selectgoods\',0);insert into Tfunction values(1,\'商品信息更新\',\'updategoods\',0);insert into Tfunction values(2,\'商品信息删除\',\'deletegoods\',0);insert into Tfunction values(3,\'商品定价信息查询\',\'selectgoodsprice\',0);insert into Tfunction values(4,\'商品定价信息更新\',\'updategoodsprice\',0);(3)角色表角色表的设计关键在于角色值的定义,它是一个由0和1组成的类似二进制数的字符串。
ASPNET快速入门

我们怎么看到网站的?
1、在地址栏输入地址敲回车后浏览器到底做了什么事情?
服务器与浏览器语言
浏览器: html javascript css 服务器: ?HTML(.html) .Net(.aspx .ashx) JAVA(.jsp) PHP(.php)
1.浏览器与服务器语言 浏览器只负责解释执行html+css+javascript代码 服务器可执行服务器端语言:.NET,JAVA,...,分别由不同的运行 环境执行代码(Framework,JVM) 2.静态页面(html)和动态页面(aspx)的区别? 比如说新闻列表页面(邮箱列表)。
工作概要流程图
练习
练习:做一个加法计算器 步骤: 1.新建网站 2.添加新建项->Web窗体(Cul.aspx) 3.打开Cul.aspx,进入设计视图,从工具栏选择控件拖入到页面 适当的位置(可以使用适当的HTML代码布局--Table) 4.双击按钮,生成点击事件(和WinForm程序生成点击事件一样) 5.在按钮点击事件中编写代码
编写代码演示静态页面和动态页面
里的常用文件(重点)
文件扩展名 说明 一般处理程序,核心程序,但一般使用.aspx 常用程序,用于创建网页和对网页进行编程的核心文 件类型(前台文件),和.aspx.cs文件配套使用
.ashx .aspx
.aspx.cs
.ascx
常用程序,用于编写大量的c#业务代码,和.aspx配 套使用。
一、浏览器提交数据方式?(例)
1.表单:(数据藏在请求报文体中,格式:txtname=james&txtpwd=123)
<form action=“login.ashx” method=“post”> <input type=“text” name=“txtname” /> <input type=“password” name=“txtpwd”/> </form>
Http请求头缓存设置方法

⾸次请求返回状态码200,显然得到全部正⽂。
F5刷新,对Last-Modified 有效,它是让服务器判断是否需要读取缓存,所以,依然存在请求和返回数据。
状态码是304。
点击“转到”或者光标移⼊地址栏然后回车对Cache-Control 有效,是浏览器⾃⼰决定是否读取缓存,如果在缓存期限内,浏览器不会向WEB 服务器发送请求,我们可以看到send 和receive 的数据全部是0。
⽆交互,故⽆状态码。
ctrl+f5相当于是强制刷新,所以状态码200 OK ,返回全部正⽂数据。
Http 请求头缓存设置⽅法1、直接在.aspx 页⾯中设置最直接的,在.aspx 页⾯中添加⼀⾏如下代码:<%@ OutputCache Duration="3600" VaryByParam="None" %>表⽰将这个页⾯缓存1⼩时。
运⾏页⾯查看请求头信息:第⼀次运⾏,效果如图:再次请求页⾯点击“转到”或者光标移⼊地址栏然后回车,或者F5刷新页⾯,效果如图:注意:缓存对ctrl+F5强刷不起作⽤。
可以看到,设置后请求响应头中多了max-age 、Expires 、Last-Modified 这三个属性,并且Http 状态码也由200变成了304,说明我们成功设置了该页⾯的缓存。
对⽐两次请求头⾥的Cache-Control ,发现第⼀次是no-cache ,第⼆次是max-age=0,并且第三、第四。
次都是max-age=0,关于Cache-Control 值的说明如下:如果no-cache 出现在请求中,则代表浏览器要求服务器,此次请求必须重新返回最新⽂件(请求完成后,你会看到http 状态码是200);如果max-age=0出现在响应中,则代表服务器要求浏览器你在使⽤本地缓存的时候,必须先和服务器进⾏⼀遍通信,将etag 、 If-Not-Modified 等字段传递给服务器以便验证当前浏览器端使⽤的⽂件是否是最新的(如果浏览器⽤的是最新的⽂件,http 状态码返回304,服务器告诉浏览器使⽤本地缓存即可;否则返回200,浏览器得⾃⼰吧⽂件重新下载⼀遍)。
aspx页面与html页面传值
<HEAD>
<title>Test Open</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
</body>
</HTML>
TestShowModalDialog.aspx
<%@ Page language="c#" Codebehind="TestShowModalDialog.aspx.cs" AutoEventWireup="false" Inherits="PgeTransferValue.TestShowModalDialog" %>
function CreateReturnValue(closeWindow)
{
var txtReturnValue=document.getElementById("txtReturnValue");
TestOpen.aspx
<%@ Page language="c#" Codebehind="TestOpen.aspx.cs" AutoEventWireup="false" Inherits="PgeTransferValue.TestOpen" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
用户控件ascx与网页间aspx交互的几种方法
1.aspx文件:public void SetLabel(string str){bel1.Text = str; ;}ascx文件;protected void Button1_Click(object sender, EventArgs e){System.Web.UI.Page p = this.Page;Type pageType = p.GetType();MethodInfo mi = pageType.GetMethod("SetLabel");mi.Invoke(p, new object[] { "test!!!" });}2. 在自定义控件中定义这个控件的属性public Control LabelText{get{return bel1.Text;}}3用FindControl方法寻找Label lbl = (Label)WebUserControl1.FindControl("Label1");4。
委托(利用事件委托实现用户控件中的行为触发所在页面的处理函数)在日常的工作中,我们时常会遇到这样的需求:点击一用户控件中的服务器按钮,变更页面上该用户控件以外某处的数据显示。
这样就需要在发生该按钮点击行为时,触发其所在页面的相应处理函数。
在中,我们可以利用RaiseEvent语句来引发定义在所在页面后台代码文件中的相应处理方法,而在C#中,我们可不可以做到这点呢?回答当然是肯定可以实现的。
C#中我们可以利用事件委托来达到同样的效果。
下面,让我们来一步步地解决这个问题。
1、首先,在一aspx页面中包含一用户控件(RaiseControl.ascx),该用户控件内只含有一服务器端控件。
2、在该用户控件的后台代码中声明事件委托、定义事件成员并添加一事件监视函数。
代码如下://声明事件委托public delegate void PageChangeEventHandler(string psDeliver);//定义事件public event PageChangeEventHandler MyPageChange;//监视事件protected void OnPageChange(string psStr){if (MyPageChange != null){MyPageChange(psStr);}}3、在用户控件的按钮事件中,触发已经定义的MyPageChange事件。
asp和aspx和htm和html的区别
asp\aspx\htm和html的区别每一个网页或者说是web页都有其固定的后缀名,不同的后缀名对应着不同的文件格式和不同的规则、协议、用法,最常见的web页的后缀名是.html和.htm,但这只是web页最基本的两种文件格式,今天我们来介绍一下web页的其它一些文件格式。
首先介绍一下html与htm关于HTML,HTML(HyperTextMark-upLanguage)即超文本标记语言,是WWW的描述语言。
设计HTML语言的目的是为了能把存放在一台电脑中的文本或图形与另一台电脑中的文本或图形方便地联系在一起,形成有机的整体,人们不用考虑具体信息是在当前电脑上还是在网络的其它电脑上。
我们只需使用鼠标在某一文档中点取一个图标,Internet就会马上转到与此图标相关的内容上去,而这些信息可能存放在网络的另一台电脑中。
HTML文本是由HTML命令组成的描述性文本,HTML命令可以说明文字、图形、动画、声音、表格、链接等。
HTML的结构包括头部(Head)、主体(Body)两大部分,其中头部描述浏览器所需的信息,而主体则包含所要说明的具体内容。
关于HTM,实际上HTM与HTML没有本质意义的区别,只是为了满足DOS仅能识别8+3的文件名而已,因为一些老的系统(win32)不能识别四位文件名,所以某些网页服务器要求index.html最后一个l不能省略。
MSIE能自动识别和打开这些文件,但编写网页地址的时候必须是完全对应的,也就是说index.htm和index.html是两个不同的文件,对应着不同的地址。
值得一提的是UNIX系统中对大小写敏感,不吻合的话就可能报没有文件或者找不到文件。
其次介绍一下shtml和shtm关于shtml,shtml是一种基于SSI技术的文件,也就是Server Side Include--SSI 服务器端包含指令,一些Web Server如果有SSI功能的话就会对shtml文件特殊招待,服务器会先扫一次shtml文件看没有特殊的SSI指令存在,如果有的话就按Web Server设定规则解释SSI指令,解释完后跟一般html一起调去客户端。
WebApplication和WebSite区别
WebApplication和WebSite区别相同点web应用程序可能是微软为了让程序员很好的从winform过渡到web 开发而保留了。
Web网站就完全要应用到web开发的。
其实两者之间没有什么大的区别。
不同点1、最主要的是编译模型不一样website发布的时候是对每个aspx 生成的代码文件单独编译所以在bin目录下面会生成很多类似App_Web_4xjy5_p1.dll的文件特殊目录App_Code中代码文件才编译成单独一个程序集。
这种设计可以单独生成一个页和该页程序集。
上传的时候可以只更新此页web应用程序发布的时候bin目录下面就一个dll文件但这个“网站”项目编译速度慢类型检查不彻底。
两个不同的ASPX可以生成相同的两个名称的类。
发布的时候也很慢会删除所有原始发布目录中的所有文件且复制所有新的文件。
并且中间还有停顿需要用户主动按覆盖文件的按钮才能发布。
2、Web网站Default.aspx显示有一个原有文件Default.aspx.csweb应用程序Default.aspx显示有两个原有文件及Default.aspx.cs和Default.aspx.designer.csdesigner文件通常存放的是一些页面控件中控件的配置信息3、Web网站只有一个发布网站web应用程序有重新生成和发布两项4、Web网站在引用后出现一个bin文件夹那里存放dll和pdb文件web应用程序和一般的winform没有什么区别都有引用的是命名空间等5、Web网站则不可以作为类库被引用web应用程序可以作为类库被引用6、Web网站可以添加 文件夹包括bin、App_Codeweb应用程序可以添加文件夹中不包括bin、App_Code7、web应用程序还可添加组件和类Web网站则没有8、源文件虽然都是Default.aspx.cs但是web应用程序有命名空间多了一项System.Collections 空间引用9、Web应用程序在修改了页面底层的代码之后需要重新进行编译网站不需要重新编译10、网站在发布的时候会自动生成Dll文件但是每次的Dll文件名都不一样Web应用程序的项目会生成Dll文件11、Web应用程序会有解决方案和项目文件12、web应用程序在2002、2003中就存在了web网站是2005新发明的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
aspx与aspx.cs的关系
在vs中,有很多朋友问起,在一个网站项目中的aspx和aspx.cs文件的关系,现在就归纳如下:
可以把aspx文件分成三部分:
●∙有run=”server”属性的标签
●∙<% %>
●∙标准HTML标签
再算上aspx.cs,一共是四块,我们分别来说他们的关系。
(图一)
我们来做个例子,结合上面的例子来看一下吧。
我们新建一个网站,页面如下:
<%@Page Language="C#"AutoEventWireup="true"CodeFile="Default.aspx.cs"Inherits="_Defa ult"%>
<!DOCTYPE html PUBLIC"-//W3C//DTD XHTML 1.0
Transitional//EN""/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="/1999/xhtml">
<head runat="server">
<title>无标题页</title>
</head>
<body>
<form id="form1"runat="server">
<div>
<asp:Button ID="But_Yes"runat="server"Text="Button"/>
<% int i = 10;
this.k = i;
%>
</div>
</form>
</body>
</html>
后参代码如下:
using System;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
public partial class_Default : System.Web.UI.Page
{
int j = 10; //私用成员
protected int k=100; //保护成员
protected void Page_Load(object sender, EventArgs e)
{
But_Yes.Text = "确定";
}
}
对这个例子我们来分析一下。
首先,我们要发布这个,会看到发布的文件有如下图所示:
(图二)
(图三)
我们主要看Default.aspx和bin中的这个dll,现在我们用反身工具Red Gate’s .NET Reflector来查看这个dll文件,发现在这个文件中,只有一个类_Defaule,如下图:
(图四)
好,我们已经把知识都准备好了,接下来分析图一。
按照图一的说法,编译成dll后,这个_Default这个类中应该有包括aspx.cs文件中的和aspx中有run=”server”属性的标签,当然,在类中就成为一个字段,并且是控件类型的字段了。
我们在图四中可以看出,在aspx.cs
中的j,k和aspx中的form1表单和But_Yes按钮都可以看到,但看不到<%%>中的i。
aspx.cs和aspx中有run=”server”属性的标签是怎么样编译在一个
类中的呢?原因在aspx.cs中,类_Default前的关键partial的功劳,我们都知道,这是一个分部类的关键字,就是可以把一个类分成两块来写,或分到两个文件中去写,aspx.cs是一部分,另一部分呢?另一部分就是在aspx中用
run=”server”属性的签标,这些标签成为_Default类的一个字段,所以我们能在aspx.cs中能访问到这些标准。
我们接下来再看图一,在有请求到达服务端时,服务端就会把aspx中<%%>生成一个类,并且这个类是继承_Default这个类的,这样也就是说,在<%%>中的代码,能访问到aspx.cs中_Default中的非私有变量,也就是我们访问不到_Default类中的j,但能访部到该类中的k。
最后,_Default的子类和HTML代码在IIS和CLR的协作下,生成页面
文件发送给客户端。
综上我们可以看出,aspx.cs文件和服务器端控件生成一个类,<%%>生成一个类,后面的类是在运行时生成,它是继承前面的类,最后再结合aspx文件中的HTML生成页面文件发送给客户。
(以上是在vs2008测试通过)。