使⽤ASP.NET服务器控件
服务器控件简介
以⼀个⽂本框控件为例:
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
控件代码有如下特点:
控件名称前⾯都带有asp:前缀
ID特性⽤来唯⼀地标识页⾯的⼀个控件
强制性的runat特性⽤来指出该控件存活在服务器上。
可以通过⼯具|选项|⽂本编辑器|HTML|格式设置|标记专⽤选项来控制每个标记的默认闭合⾏为。
试⼀试:使⽤服务器控件
1. 创建⼀个新的Web窗体,命名为ControlsDemo.aspx
2. 在form的div块中,添加⼀个TextBox、Button和Label控件,并设置其特性。最终代码如下:
<div>
Your name
asp 源代码<asp:TextBox ID="YourName" runat="server"></asp:TextBox>
<asp:Button ID="SubmitButton" runat="server" Text="Submit Information" />
<br />
<asp:Label ID="Label1" runat="server"></asp:Label>
</div>
3. 为Button控件添加代码
Protected Sub SubmitButton_Click(sender As Object, e As EventArgs) Handles SubmitButton.Click
Label1.Text = String.Format("Your name is {0}", YourName.Text)
End Sub
4. 保存所有修改,并在浏览器中打开页⾯。
5. 查看页⾯的源代码。
6. 返回页⾯,输⼊你的名字,按提交,再次查看源代码。
⼯作原理
asp服务器控件存活在服务器上的aspx页⾯中,在该页⾯中,控件可以由asp运⾏库处理。
每个服务器控件都有相对应的html表⽰。如本例中,Label控件对应span元素,⽂本框控件对应<input type=”text”>,⽽按钮最终显⽰为<input type=”submit”>
当单击按钮时,控件引发⼀个回发,将页⾯中控件的信息发送给服务器,然后服务器再次加载页⾯,并执⾏按钮的单击事件处理程序。
ASP.NET服务器控件详解
在页⾯中定义控件
可以采⽤多种⽅法添加控件到页⾯:
拖动控件到设计视图
在源视图调整标记的位置
直接在源视图输⼊标记
利⽤属性⾯板修改控件属性
所有控件的共同属性
类别名称说明
杂项id在页⾯中唯⼀的标识控件
-runat总是为"server”
布局height
width
⾏为enabled
visible
tooltip定义⼯具提⽰
clientidmode
可访问性accesskey定义键盘快捷键
可访问性accesskey定义键盘快捷键
外观backcolor
forecolor
bordercolor
borderstyle
borderwidth
cssclass html class特性
控件的类型
标准控件
简单控件
包括textbox, button, label, hyperlink, radiobutton, checkbox
列表控件
包括listbox, dropdownlist, checkboxlist, radiobuttonlist, bulletedlist
试⼀试使⽤列表控件
1. 创建⼀个名为ListControls.aspx的Web窗体
2. 为页⾯添加⼀个DropDownList, ⼀个CheckBoxList,⼀个按钮和⼀个label控件。并在label前添加适当的空间。
<div>
<asp:DropDownList ID="DropDownList1" runat="server">
<asp:ListItem>C#</asp:ListItem>
<asp:ListItem>Visual Basic</asp:ListItem>
<asp:ListItem>CSS</asp:ListItem>
</asp:DropDownList>
<asp:CheckBoxList ID="CheckBoxList1" runat="server">
<asp:ListItem>C#</asp:ListItem>
<asp:ListItem>Visual Basic</asp:ListItem>
<asp:ListItem>CSS</asp:ListItem>
</asp:CheckBoxList>
<asp:Button ID="Button1" runat="server" Text="Button" />
<br />
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
</div>
3. 为按钮添加单击事件。
Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Label1.Text = "In the DDL you selected " & DropDownList1.SelectedValue & "<br />"
For Each item As ListItem In CheckBoxList1.Items
If item.Selected Then
Label1.Text &= "In the CBL you selected " & item.Value & "<br />"
End If
Next
End Sub
4. 保存对页⾯的所有修改,然后在浏览器中请求它。
⼯作原理
<asp:ListItem>元素有⼀个Value特性,如果省略,Value就等于该元素的html⽂本值。
容器控件
如Panel,PlaceHolder, MultiView,Wizard
Panel控件呈现为<div>标记,可以轻松地访问所有包含的控件和其他内容。
试⼀试使⽤Panel控件
1. 新建⼀个名为Containers.aspx的Web窗体。
2. 在form中的div中添加⼀个checkbox和⼀个panel控件。最终代码如下:
<div>
<asp:CheckBox ID="CheckBox1" runat="server" AutoPostBack="True" Text="Show Panel" />
<asp:Panel ID="Panel1" runat="server" Visible="False">
I am visible now.
</asp:Panel>
</div>
3. 为checkbox添加checkedchanged事件处理程序。
Protected Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged
Panel1.Visible = CheckBox1.Checked
End Sub
4. 保存修改,在浏览器中查看。查看页⾯的html⽂件,根据id=’Panel1’可以知道panel显⽰为div。
⼯作原理
Panel控件的Visible属性为False,意味着控件在服务器上不可见。
试⼀试⽤向导创建容易使⽤的表单
1. 创建名为Wizard.aspx的Web窗体。
2. 在form中的div中添加Wizard控件。
<asp:Wizard ID="Wizard1" runat="server" ActiveStepIndex="0" Width="500px">
<WizardSteps>
<asp:WizardStep runat="server" Title="About You">
<asp:Label ID="Label1" runat="server" Text="Type your name"></asp:Label>
<asp:TextBox ID="YourName" runat="server"></asp:TextBox>
</asp:WizardStep>
<asp:WizardStep runat="server" Title="Favorite Language" StepType="Finish">
<asp:DropDownList ID="FavoriteLanguage" runat="server">
<asp:ListItem>C#</asp:ListItem>
<asp:ListItem>Visual Basic</asp:ListItem>
<asp:ListItem>CSS</asp:ListItem>
</asp:DropDownList>
</asp:WizardStep>
<asp:WizardStep runat="server" Title="Ready" StepType="Complete">
<asp:Label ID="Result" runat="server" Text="Label"></asp:Label>
</asp:WizardStep>
</WizardSteps>
</asp:Wizard>
3. 为向导控件的finishButtonClick添加事件处理函数。
Protected Sub Wizard1_FinishButtonClick(sender As Object, e As WizardNavigationEventArgs) Handles Wizard1.FinishButtonClick
Result.Text = "Your name is " & YourName.Text
Result.Text &= "<br />Your favorite language is " & FavoriteLanguage.SelectedValue
End Sub
4. 保存修改,在浏览器中查看。
⼯作原理
Wizard控件可以将⽤户的输⼊依据逻辑在独⽴的向导页⾯上呈现各个部分。然后,Wizard控件会通过⾃动创建Next,Previous和Finish按钮来处理所有导航问题。这⾥需要设置
asp:WizardStep的StepType属性,倒数第⼆步为Finish,最后⼀步为Complete。其他可以设为Auto。
将asp:Wizard的ActiveStepIndex设为0,确保向导先启动第⼀页。
当⽤户单击向导最后⼀步的finish按钮会激发Wizard控件的FinishButtonClick事件。
其他标准控件
html控件
数据控件
有效性验证控件
导航控件
登录控件
Ajax扩展
WebParts
动态数据
ASP.NET状态引擎
状态引擎的定义及其重要性
http协议是⽆状态的,Web服务器不会跟踪从特定浏览器中发出的请求,Web服务器不记忆以前请求的页⾯。状态引擎的⼯作原理
状态引擎可以存储很多控件的状态。
试⼀试分析ASP.NET状态引擎
(略)
⼯作原理
form元素的⽤途:它⽤来封装⼀些表单控件,这些控件的值会被⼀起提交回服务器。
表单提交⽅式有两种:
Post:所有来⾃表单的数据都被添加到请求的主体中,然后发送给服务器。
Get:所有的数据都被附加到请求的实际地址后⾯。
默认情况下,表单使⽤Post⽅法向服务器发送数据,并且每个Web窗体只有⼀个form元素。
默认情况下,Web窗体提交回给⾃⼰,也就是State.aspx页⾯的form元素的action属性为State.aspx。
隐藏的__VIEWSTATE字段,是服务器⽤来跟踪表单控件当前状态的。
当ASP.NET运⾏时加载ASP.NET页⾯时,会⽤该页⾯的相关信息填充这个隐藏字段。
并⾮所有控件都依赖于view state
有很多控件⾃⼰维持⾃⼰的状态,这些控件包括TextBox,checkbox,radiobutton,dropdowlist
关于view state和性能的⼀个注意点
为了性能,可以关闭不需要的view state功能:
在web站点级别在fig中,将<system.web>下<pages>的enableViewState特性设置为false
<pages controlRenderingCompatibilityVersion="4.5" enableViewState="true"/>
</system.web>
在页⾯级别在每个页⾯上⽅可以发现页⾯指令,在页⾯指令中,可以将EnableViewState设置为false <
%@ Page Language="VB" AutoEventWireup="false" CodeFile="State.aspx.vb" Inherits="State" EnableViewState="True" %>在控件级别各控件允许分别设置EnableViewState设置为false
有些控件如数据驱动控件的enableViewState可以考虑为false。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论