1,页面状态:在asp.net中,页面对象的属性、页面控件的属性被称为“view state”(页面状态)。页面状态在asp.net中被受到特别关照.
2:程序集,可以把程序集简单理解为你的.NET项目在编译后生成的*.exe或*.dll文件. 如果说命名空间是类库的逻辑组织形式,那么程序集就是类库的物理组织形式。只有同时指定类型所在的命名空间及实现该类型的程序集,才能完全限定该类型。(摘抄自《精通.NET核心技术--原来与架构》 电子工业出版社)
也就是说,你要创建一个类的实例,必须知道该类的 命名空间(这个一般都知道)+程序集
我怎么把项目和程序集联系起来理解?
一个项目对应一个程序集.项目名与程序集名相同。
Templated 模板
theme 主题
control,空间
在C#中把属性成员称作“域(field)”,而“属性”则成为这种“属性化的方法”专用的名词。
Page.IsPostBack 是用来检查目前网页是否为第一次加载,当使用者第一次浏览这个网页时Page.IsPostBack 会传回False,不是第一次浏览这个网页时就传回True;所以当我们在Page_Load 事件中就可以使用这个属性来避免做一些重复的动作。
parse 类型转换
Convert:
1. 转变,变换[(+to/into)]
They converted the garage into a theater.
他们将车库改成戏院。
2. 使皈依;使改变信仰[(+from/to)]
The priest converted many natives into Christianity.
这个牧师使许多土著居民改信基督教。
3. 非法挪用
4. 兑换(证券、货币等)[(+into)]
He wanted to convert his dollars into Japanese yen.
他想将美元换成日币。
vi.
1. 转变,变换[(+to/into)]
2. 皈依;改变信仰[(+from/to)]
He converted to Catholicism.
他改信天主教。
---------------------------------------------------------------------
用户控件和自定义控件的定义及区别
代号0324 时间2006-2-7 13:26:00
(一).用户控件和自定义控件概述
用户控件(UserControl): 扩展名为*.ascx,跟*.aspx在结构上相似,是指页面中
加载的功能块,只是用户控件不能单独作为页面运行,必须嵌入到*.aspx页面或其它用
户控件中使用.
自定义控件,跟HtmlControl或WebControl相似,编译后可以添加引用到工具栏里
面,直接用鼠标拖动使用.
(二).使用
在一个大系统中,有时候会只能几个*.aspx页面,其余的都是做成*.ascx页面,
这样可以增强页面之间的藕合性,一个用户控件*.ascx都作为一个独立的功能块.
自定义控件是指编译后直接可以放到工具箱中用,就像TextBox,DataGrid一样
在设计器中可以用鼠标拖动到页面上使用.
自定义服务器控件分为两种:
1.一种是用*.aspx代码和*.cs代码编译后生成DLL,再添加引用到工具箱使用.
一般用于WebForm中.
2.另一种是只用*.cs实现,再编译生成DLL,添加到工具箱使用.
一般用于WinForm中.
自定义控件生成步骤:
比如:
1. 将一个Button从设计器拖到页面中,
对按钮大小,颜色或文本设置一个固定值,保存文件名为: a.cs
2. csc /r:System.dll /t:library/out:../../A.dll a.cs
3. 右击工具箱空白处,弹出右击菜单后,选“添加移除项”,将刚生成的DLL
添加到工具箱里面来,这样,就可以像一般的Button一样拖动使用了
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=572470
-------------------------------------------------------------------------------
当一个方法被声明为Virtual时,它是一个虚拟方法
子类在使用它的时候要重载(override)
从上面不难看出,一个静态的方法是真实存在的,而一个虚拟方法可以被派生类重写,这二者是冲突的,其实对于一个方法,C#规定只能使用下面这些限定符中的一个:
override virtual static abstract sealed
代表的含义分别为:
重载函数、虚拟函数、静态函数、抽象函数、密封函数(不可派生)
Virtual
Virtual 关键字允许在派生类中重写这些对象,默认情况下,方法是非虚拟的,不可以重写非虚方法,virtual关键字不可以与static、abstract、private、override一起使用。
Virtual关键字又是和override紧密不可分的,如果要实现Virtual方法就必须要使用override或new关键字(new和override产生的机理不同)。
abstract
在类声明中使用abstract修饰符以指示某个类只能是其他类的基类。标记为抽象或包含在抽象类中的成员必须通过从抽象类派生的类来实现。抽象类不能实例化。
抽象方法声明不提供实际的实现,所以没有方法体;方法声明只是以一个分号结束,并且在签名后没有大括号 ({ })。
sealed
密封方法会重写基类中的方法,但其本身不能在任何派生类中进一步重写。密封类不能被继承。
当应用于方法或属性时,sealed修饰符必须始终与override一起使用。
Override
Override关键字主要是提供派生类对基类方法的新实现,重写的基类方法必须和Override的方法具有相同的签名
-----------------------------------------------------------------------------------
Page_Load是服务器端页面加载时处理的第一个事件
OnLoad只是客户端的JS用来加载控件时处理的事件
Control.OnLoad是一个虚方法,当在程序中将它用overrite覆盖后就等效于Page_Load,当然,你的类需要从System.Web.UI中继承
Page_Load是事件,当服务器控件加载到 Page 对象中时发生;
OnLoad是方法,引发 Load 事件。
-------------------------------------------------------------------------------------
事件驱动模型:建立在请求/响应基础上的.
在服务器和客户之间,存在另外一种模型:事件驱动模型 服务器等待客户机发生的事件,一旦事件发生后,服务器将采取行动,执行某些功能。
-----------------------------------------------------------------------------------------
服务器空间
asp.net用隐藏表单字段来记录每个空间的视图状态,并相应的更新它们。
客户端虽然不能和服务器端交互,但是能够将消息转发给服务器。
-------------------------------------------------------------------------------------------
CLR 运行阶段通用语言。(Common Language Runtime),相当于java的虚拟机jvm
MSIL 微软中间语言。
有了。net框架和CLR后,仍需要编写大麻并对其进行编译,不过您将代码编译为MSIL。而不是编译成某种计算机能够理解的语言。asp.net页面也被编译为MSIL,编译为MSIL时,应用程序将生成一些元数据(metadata),它们是关于应用程序的描述性信息,指出应用程序能做什么,归属哪里等等。
当您要运行程序时,由CLR将接管工作,进一步将代码编译成机器的本地语言。这样,MSIL便可以用于任何类型的计算机,CLR懂得许多不同的计算机语言。
------------------------------------------------------------------------------------------
。net框架中的任何东西----asp。net页面,消息框等等----都被视为对象,这些对象被放置在叫做名称空间的逻辑分组中。
------------------------------------------------------------------------------------------
服务器控件:服务器控件是Web表单的用户界面元素,asp。net有四种服务器控件:HTML服务器控件 web控件,有效性验证控件和用户控件。HTML服务器控件代表常规的HTML表单元素。但它们是在服务器上创建的,您可以在服务器上控制它们。
所有服务器控件都有属性,方法和事件,他们提供的功能比传统的HTML表单元素多,使开发人员创建用户界面更容易。创建服务器控件时,不必为编写HTML代码而操心,页面被请求时,服务器控件将自动生成正确的HTML代码。例如:<asp:Button test="submit" runat="server"/>
该按钮被请求时,它将自动为客户生成下面对俄HTML
<input type="submit" name="btn1" value="submit">
前一行仅供服务器使用----客户看不见它 (即使浏览器可以看到,也看不懂,因为它仅能识别HTML代码),以这样的方式创建控件,您可以少花时间去考虑 提供UI布局的HTML 而将 更多的时间用来考虑 UI应该实现什么样的功能。
asp.net知道各种浏览器的 功能。对于不支持高级功能的浏览器而言,asp.net可以降低 HTML输出级别 。
服务器控件事件:
服务器控件能 引发很多事件,换句话说,用户可以对服务器控件执行许多操作:单击按钮,单击链接,,填写文本框,选择列表框中的条目等等。所有的这些事件都要有服务器进行处理,所以每当事件发生时,客户都要向服务器发送信息。
只有主动时间才会被服务器进行处理。
主动事件要求用户进行明确的操作,即用
户必须有意识的操作。包括单击按钮或者链接,填写文本框,被动事件是用户无意中执行的操作,例如鼠标在图像上移动。
向服务器发送事件的方式有两种:发生时立即发送和累积一段时间后一起发送。后者效率更高,因为用不着发送那么多次。这意味着在客户服务器之间传递的数据更少。
到多数情况下,您将使用后一种方法,例如 :假设用户将其姓名输入到表单中,每键入一个字母,就发生一个事件。您并不希望每次更改一次字幕就发送一次数据,而希望在用户输好数据或单击submit按钮后再发送。这种事件被缓存(cached),即在用户决定发送数据前,他们被存在客户端。这样服务器可以一次性处理这些事件。
实际上这种事件被称为TextCHanged事件,它只在用户输入文本并离开该UI元素
发生,但道理都一样的。
asp.net中的所有服务器控制事件都会向服务器发送两个对象:一个代表引发事件的控件,另一个描述关于此事件的特定信息。(参考第三章)
有事件发生时,控件自动引发事件,为了在服务器上处理事件,需要告诉控件使用哪种方法。如下面代码告诉asp.net,发生ckick事件时,使用CilckHandler方法来进行处理
<asp:Button tunat="server" οnclick="CilckHandler">
<%@ Page Language="VB"%>
<script runat="server">
sub Button_Click(abj as object, e as EventArgs)
Label.Text="you clicked<b>"&&abj.Text&"</b>"
end sub
</script>
<html><body>
<font size="8">sam's a Teach Yourself ASP.NET in 21 days:Day 5 </font><br>
<form>
<asp:Button id=Button1 runat="server" Text="Button1" οnclick="Button_Click"/>
<asp:Label id="Label" runat="server"/>
</form></body></html>
让我们来看看:Label.Text="you clicked<b>"&&abj.Text&"</b>"
该行将名称为Label控件的Text属性设置为等级后面的值,obj是其中一个参数的名称参数,因为您知道它代表一个按钮,因此知道它有Text属性。
因为按钮控件没有发送其他信息,因此方法第2个参数(e)当前么有包含任何信息,当然,您还是要将他包括在内,因为它是标准事件参数列表的一部分。
-----------------------------------------------------------------------
发送web表单:
-----------------------------------------------------------------------
向页添加 Repeater Web 服务器控件需要若干步骤。下列过程描述创建一个工作的 Repeater 控件必须执行的最少步骤。
向 Web 窗体页添加 Repeater Web 服务器控件
向 Web 窗体页添加一个数据源。有多种方法可处理页上的数据。若要选择适当的方法,请参见 ADO.NET 数据访问介绍和对 Web 窗体页中数据访问的介绍。
在“设计”视图中,从“工具箱”的“Web 窗体”选项卡将 Repeater 控件拖到页面上。
设置控件的 DataSource 属性。在“属性”窗口中,DataSource 属性的下拉菜单中将显示所有数据源,例如在页上定义的 DataSet 和 DataView 控件。
调用控件的 DataBind 方法。通常使用如下所示代码在该页的 Page_Load 事件中完成此操作,此处 Repeater1 控件绑定到 DataSet 对象。由于 DataSet 已在设计器中绑定到 Repeater 控件,所以它不需要在该代码中进行绑定:
' Visual BasicProtected Sub Page_Load(ByVal sender As System.Object, _ByVal e As System.EventArgs) Handles MyBase.Load ' Put user code to initialize the page, including data, here. Repeater1.DataBind()End Sub// C#protected void Page_Load(object sender, EventArgs e){ // Put user code to initialize the page, including data, here. Repeater1.DataBind();}
切换到“HTML”视图。
在 Repeater 元素内创建包含 HTML 文本和控件的模板,以显示数据。有关详细信息,请参见 Web 服务器控件模板。有关 ItemTemplate 元素的主干可能会如下所示:
<asp:repeater id=Repeater1 runat="server" datasource="<%# dataView1 >"> <ItemTemplate> </ItemTemplate></asp:repeater>
向模板添加 HTML 元素和 Web 服务器控件的任意组合以显示数据源信息。
必须通过包括一个数据绑定表达式将控件绑定到数据。通常,将它们绑定到容器控件。显示数据源中每行的“EmployeeName”和“PhoneNumber”字段的 ItemTemplate 元素将类似如下所示:
<ItemTemplate> <%# DataBinder.Eval(Container, "DataItem.EmployeeName") %> <%# DataBinder.Eval(Container, "DataItem.PhoneNumber") %> <br></ItemTemplate>
有关详细信息,请参见 Web 窗体页中的数据访问。
下面的示例说明一个完整的 Repeater 控件定义在“HTML”视图中应类似于什么样子。指定将 Repeater 控件呈现为表。<table> 元素在 HeaderTemplate 中开始并在 FooterTemplate 中结束。(“任务列表”将报告有关这种情况的错误,但是这些错误可以安全地忽略,在运行应用程序时,该表将正确地显示。)在 Repeater 控件体内,表单元格用于显示数据源的列。除了表单元格的背景色不同以创建带状效果外,AlternatingItemTemplate 元素与 ItemTemplate 项相同。
<asp:Repeater id=Repeater1 runat="server" DataSource="<%# DataView1%>"> <HeaderTemplate> <table width="100%" style="font: 8pt verdana"> <tr style="background-color:DFA894"> <th> First Name </th> <th> Last Name </th> </tr> </HeaderTemplate> <ItemTemplate> <tr> <td><%# DataBinder.Eval(Container, "DataItem.EmployeeName") %> </td> <td><%# DataBinder.Eval(Container,"DataItem.PhoneNumber") %> </td> </tr> </ItemTemplate> <AlternatingItemTemplate> <tr> <td bgcolor="lightblue"> <%# DataBinder.Eval(Container, "DataItem.EmployeeName") %> </td> <td bgcolor="lightblue"> <%# DataBinder.Eval(Container,"DataItem.PhoneNumber") %> </td> </tr> </AlternatingItemTemplate> <FooterTemplate> </table> </FooterTemplate></asp:Repeater>
下面的示例使用标签 (Label) 控件显示数据库的值。使用分隔符模板创建列表中值之间的分隔符。请注意,Label 控件的 Text 属性的值包含在单引号中。属性值通常放在双引号中,但是由于 DataBinder 调用包含双引号,所以 Text 属性值必须括在单引号中。
<asp:Repeater id="Repeater1" runat="server" DataSource="<%# DataView1%>"> <ItemTemplate> <asp:Label id=Label1 runat="server" Text='<%# DataBinder.Eval(Container, "DataItem.EmployeeName")%>'> </asp:Label> </ItemTemplate> <SeparatorTemplate>,</SeparatorTemplate></asp:Repeater>
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=4464
------------------------------------------------------------------------
用模板从DataList把数据度到页面上来 。
--------------------------------------------------------------------
web表单通过表单隐藏字段来保存表单中每个空间的视图状态(viewstate)。试图状态指出控件中输入的内容,控件是否被选中,哪个列表被选中等信息,试图状态提供了大量的信息,asp.net可以用来维护每个服务器控件的状态。
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value=""/>
------------------------------------------------
委托