相关网盘免费资源下载...
ASP.NET实战-控件及日常功能开发
一、 Aspx深入
1. 一个页面一般是由三个部分组成,如果页面是A,将会出现三个文件,文件名分别为A.aspx A.aspx.cs A.aspx.designer.cs
.aspx用类通过Asp.NET引擎来实现页面模板的功能
.aspx.cs 存放动态页面处理和程序逻辑功能代码的位置
.aspx.designer.cs 辅助页面展示的文件,包含页面控件的声明等,通常无需关注
2. Html:负责显示,静态页面
Ashx:存放动态页面处理和程序逻辑功能代码的位置
Aspx:负责显示,生成出来的静态页面,原理不同,但表现形式相同
Aspx.cs:功能和Ashx相似,但是处理起来更加简单方便直接快速
3. Ashx:一般情况下处理页面中非文本元素的操作
Aspx:一般情况下页面文本元素、控件以及业务逻辑的使用,特殊情况下由于自动生成标准的html代码当中的垃圾数据是无可避免的,为了性能和效果,会选取ashx等更加原理性也更加复杂的技术来实现;
二、 Page深入
<% SayHello();%>调用用法
<% =UserName%>调用属性
<%for (int i = 0; i < 10; i++)
{ %>
<%} %>
CodeBehind:原理相同,含义和写法不太一样,应该CodeBehind是比较清楚的
CodeFront:比较模糊
分部类:一个类按照大体功能来区分成几个文件
Label:用于填充描述信息的一个控件,一般在代码中很少直接访问,都是在界面中直接展示。
正常情况下,ASP.NET引擎会将服务器端Label控件解释为span标签
<asp:Label ID="Label1" runat="server" Text="userName"></asp:Label>
<span id="Label1">userName</span>
<asp:Label ID="Label1" runat="server" AssociatedControlID="txtUserName" Text="userName"></asp:Label>
<label for="txtUserName" id="Label1">userName</label>
TextBox
AutoPostback
TextChanged
TextMode:
SingleLine:Input text
Password:Input password
MutliLine:TextArea
Literal:
Mode:
Button:
Click
ClientId
AutoPostBack深入理解
TextBox(TextChanged)、CheckBox(CheckedChanged)等其他控件都有一些最常用的事件,包括文件、选中状态等重要状态的变化所引发的事件,但是该控件本身并不能自动执行提交功能,即使该事件有相应方法与之绑定,也会由于未提交,而根本执行不了。
此时,设置AutoPostBack=true,让这些控件具备提交功能
ASP.NET引擎将会如何自动生成Js代码或者html代码与该属性保持一致。
onchange="javascript:setTimeout('__doPostBack(\'txtUserName\',\'\')', 0)"
onchange="javascript:setTimeout(‘__doPostBack(\’txtUserName\’,\’\’)’, 0)"
0毫秒后执行__doPostBack函数,参数分别为’ txtUserName’、’’,核心代码theForm.submit();
onkeypress="if (WebForm_TextBoxKeyHandler(event) == false) return false;"
第一种用户通过键盘输入,第二种通过代码改变文本,对于SimpleLine模式下的TextBox,AtuoPostBack只支持键盘输入改变文本
Button:和普通htmlbutton相比,多提交功能
LinkButton:和HyperLink相比,多提交功能
ImageButton:和Image相比,多提交功能
ClickCommand
执行时机略有不同
参数传递方式不同:都可以通过CommandName CommandArgument传递,但是访问方式一个方便,一个不太方便,表现出这两个属性的适用场合
多个按钮公用,多个功能公用,ListView控件需要Command
数据绑定机制:
Winform:
复合式数据显示控件DataGridView
this.dgvDetails.DataSource = DataTable;
列表式数据显示控件ComboBox
如果columnName没有唯一约束,那么几乎就是错误的
Foreach(DataRow tmpDr in dataTable.Rows)
{
this.cboNames.Items.Add(tmpDr[“columnName”]);
}
studentName
teacherName
itemName
如果columnName没有唯一约束,理论上这种方式就正确了,但是对于用户依然是错误的,因为无法区分相同的columnName的背后valueColumnName却是不同的
this.comboBox.DataSource = dataTable;
this.comboBox.DisplayMember = “columnName”;
this.comboBox.ValueMember = “valueColumnName”;
WebForm:
1this.DataList1.DataSourceId = “ObjectDataSource1”;
this.SqlDataSource1.ConnectionString = “”;
this.SqlDataSource1.SelectCommand = “”;
1this.ObjectDataSource1.TypeName=””;
1this.ObjectDataSource1.SelectCommand=””;
2this.DataList1.DataSource = List<Object>;
2this.DataList1.DataBind();三层架构
this.comboBox.DataSource = dataTable;没有三层架构,直接用是可以的
可以看出第一种数据绑定的核心就在两个类型的控件,一种是数据显示控件,第二种是数据源控件
数据源控件:ObjectDataSource
SqlDataSource AccessDataSource
XMLDataSource SiteMapDataSource
LinqDataSource:因为Linq是可以访问所有数据库,包括常见的例如XML格式的数据
EntityDataSource
数据显示控件:
列表式显示控件:DropDownList BulleteList CheckBoxList RadioButtonList
复合式显示控件:
1.0:DataGrid
2.0:GridView DataList Reapter DetailsView FormView Chart
3.5:ListView QueryExtender(待定席)
ListView:GridView+ DataList+ DetailsView+ FormView
Reapter:更加接近于Java操作数据的模式,比较灵活
GridView DataList DetailsView FormView Chart
DAL-Service:
异常或者特殊情况处理(异常、列为空等)
商业严格度处理(删除等)
封装技术应用
UI BLL DAL三层大小关系:
UI(界面)和BLL(业务)的功能划分最为关键
DAl相对明确,关于数据库的操作
基本是将业务写在界面之下的,严格意义来说是不对的,我们是因为上课提高代码效率才允许你如此写。
DropDownList AppendStatic…… AutoPostBack
图形绑定和代码绑定(数据源控件ID和数据源DataBind)
DataList和Repeator之间很相似
DataList默认就将每个元素分为一层一层的
Repeator默认没有任何样式,有足够的灵活度
尽量选用html,html控件,再去选取服务器端控件
行用来进行区分,一行隔着一行,偶数行是交替行
DataSourceId
DataSource
Eval Bind:同为绑定数据
Eval重点在展示,单方向的,浏览
Bind重点在双向操作,双方向的,提交数据方式也不同,
其他所有的方面
Repeator适用场合:
最重要的价值在于可以精细化展示查询结果(顺便也可以完成删除功能)界面
一般来说不会再Repeator上直接使用增改功能,会将这些功能单独放置一个页面
ListView适用场合:
对于一些固定常用格式的查询会比Repeator更加快速有效
对于列较少的实体来说也可用ListView来直接增改功能
列较多/少、展示格式较复杂/简单的实体
查询/删除 修改/新增
列较多的实体 Repeator(格式做特殊安排) 单独页面或者FormView
ListView(只展示其中较重要的列,而忽略普通的列)
单独页面或FormView(较清晰的展示单个实体)
列较少的实体 Repeator、ListView都可以 ListView、单独页面、FormView
展示格式较简单的实体 ListView ListView
展示格式较复杂的实体 Repeator 单独页面或者FormView
Repeator/ListView+单独页面
代码自动生成工具的制作
CodeSmith4.0:权威的国外动态生成工具
静态文本:写在代码和参数的引用代码的后面,直接书写就是1在My static content here.
如何访问属性值:<%=propertyName % >
如何访问方法:<%=methodName % >
如何将代码和静态结合
东软
C#来生成C#
相关网盘免费资源下载...