ASP.NET实战-控件及日常功能开发

来源:互联网 发布:数据分析预测方法 编辑:程序博客网 时间:2024/05/18 00:08

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(&#39;__doPostBack(\&#39;txtUserName\&#39;,\&#39;\&#39;)&#39;, 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#