`
happmaoo
  • 浏览: 4333370 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

学习《Wrox.Beginning.ASP.NET.2.0.with.C.Sharp.May.2006》

阅读更多

仅看了前7章的内容,感觉上面介绍的方法可塑性太差,不便于开发适合自己应用程序的ASP.NET应用程序;
但是这本书是个还可以的入门书,能够对ASP.NET有个初级的认识,先把学到的一些重点知识整理于此,供日后查阅;
下一步,需要学习一本更好的ASP.NET书籍进行学习,了解强大高效的ASP.NET技术;


整理
1.
ASP.NET2.0

VWD

2.
SiteDesign:
1)sitedesign;
2)presentation and information:

MasterPage(控制presentation和layout,通过关联css文件即可)
ContentPage(提供Information和logic_control部分)

<using CSS in MasterPage>
(Master Page的高级特性:多层结构,多处content)
3)
sitemap:

web.sitemap(一个XML文件,各个页面之间的关系;手工组织和编写;之后的Navigation等控件可以使用)
4)两种配置文件:
Web.config (保存整个site的参数设置)
Global.asax (保存各个页面相同的events响应代码)

手工编辑注意语法格式;或使用Asp.Net Web Site Administration Tool


3.
Page Design:
1)
静态页面static pages(HTML page);
使用VWD来当作html静态网页的编辑器,工作效率会高很多!

a.可以首先添加信息(拖拽HTML控件,添加内容);给各个部分的信息添加tag;
b.给整个page编写CSS文件,设置presentaion和layout;
c.最后关联起来,即可完成符合标准化的网页设计(可以使用其check page for accessibility)

2)
Dynamic Content:
客户端动态脚本:JavaScript;
服务器端动态:ASP.NET
(不同于PHP,JSP等编写那么效率低下,使用ASP.NET只需要
a.拖拽需要的server controls;
b.设置各个controls的属性;
c.为各个controls添加功能和事件
<整个过程像编写桌面应用程序一样简单!高效>
)

3)
server controls:
source view中,<asp:textbox...... runat="server"/>等类似的Tag表示的就是server control,它与客户端浏览器的html control类似,单要在server端执行,然后转化为浏览器可以解析的HTML content到客户端;

有很多server controls在toolbox上:
standard,data,validation,navigation,login,webparts;
HTML

在源代码中添加server control,可以drag and drop;也可以type source code;

Server controls的种类:
standard:相当于windows app控件的web版本;
HTML:与其有对应的部分;(HTML的tag加上runat="server"转化为server control)<HTML control多用于静态网页,server control多用于动态>

navigation controls:
SiteMapPath(需要Web.sitemap文件)生成面包屑;
SiteMapDataSource Control和Menu Control相结合自动生成导航菜单;(初步见识了datasource控件和date binding controls相结合的巨大威力);
TreeView控件与menu控件使用方法类似;

本章介绍了:设计静态页面;客户端code和服务器端code;ASP.NET的各种server control(学会了使用navigation建立导航菜单)


4.身份验证:
great controls and wizards:
a)身份验证:
内容页面default.aspx(添加loginview控件,loginstatus控件);
<选择AnonymousTemplate或LoggedInTemplate>
登录页面login.aspx(添加login控件)

通过ASP.NET web site administration tool中的security自动添加用户的身份验证(自动建立了数据库,并在web.config中添加响应的代码)

loginname控件,可以自动显示登录以后的用户名信息;

b)成员权限系统:
添加roles,每个roles可以包括一批users;
可以设置access rules,可以针对单个users或者整个roles来建立,moveup/movedown控制设置的优先级<实现是通过修改数据库和web.config文件>



c)访问验证:
forms authentication:通过cookies来进行验证;
windows atuthentication:限制virtual directory来;

通过修改access rules,可以只让某一部分用户访问某一个目录。


5.
界面设计styling the theme(CSS和Theme)


a)给controls设置外观:两种方法,coding,或者properties设置;
HTML control:style=""属性,或者在properties中设置sytle属性对话框中的值;
Server control:直接是各个属性如width,forecolor,font-bold="true"等,或者直接在properties中设置;

b)使用CSS为整个页面来设置外观:
首先填充页面中的内容;
然后集中设置外观,add new item,选择一个css文件,给页面添加div等tag的id或class,
接着在css文件编辑中,add new style rule,或者build sytle可以快速方便高效地编辑css文件,满足设计要求(布局或者外观);
对于server control需要定义其CssClass等于定义的class名称;
<该方法对于布局和外观设计html control等没有问题,但是由于不同浏览器对定义的server control解析映射的效果不同,因此该方法存有缺点>

把css文件和目标页面关联起来,很方便,只需要drag and drop css文件到页面即可

c)解决server control设置css文件的方法,不同browser解析可能不同的问题,可以使用ASP.NET2.0的新技术:theme(skin)<两种方法:Customization theme和Stylesheet theme>

Customization theme的方法:
首先对各种server control自由定义期望的属性外观;
然后可建立add ASP.NET folder->theme,生成App_Themes文件夹下建立一整套theme,(通过在其中添加skin文件);
skin文件的添加通过刚才自由定义的属性外观:有两种,一种是统一的,没有id等属性(凡是相同的control都具有相同的外观);另一种是设置有SkinID属性的,这样aspx中SkinID属性设置为该值的control才具有这种外观;
然后可建立apsx网页,自由添加需要的server controls,要使用刚才的主题需要,首先设置document的theme属性值为定义的theme,然后对于添加的控件
默认的所有控件都遵循skin中没有SkinID的定义外观;如果需要给某特定control应用外观,只需要设置该control的SkinID为定义的值即可。<这些都可以在properties中设置>
<使用该种方法的优点是:可以对不用的页面应用不同的theme,而且在同一个theme中可以包含多个skin文件用于定义该页面中的不同控件>

Stylesheet theme的方法:(即将CSS文件加入theme中)
即类似CSS那样代码设置control的属性如font-bold=true;或者通过properties来设置control的属性
需要注意的是与customization theme方法之间存在优先级问题。
注意:同样可以在theme中添加CSS文件,进而可以定义使用该theme的页面中元素的CSS属性
一般的元素定义class或id,server control定义class,然后设置其CssClass为该值
<但是需要注意skin的优先级高于css,如果作用到相同的control,skin会override后者,但是skin中只能定义server control,而css中两种均可以>

d)各个设置方法的顺序如下,后者会覆盖前者:
Stylesheet theme
CSS styles
Element styles
Customization theme

e)如何将某个theme应用到整个site:
即设置网站的web.config,在其中添加默认的theme,如果某个页面没有设置外观,将使用这个默认theme,如果设置了存在优先级问题
如下:
1. Web.config Stylesheet theme
2. Page Stylesheet theme
3. CSS styles
4. Element styles
5. Web.config Customization theme
6. Page Customization theme

只需记住customization的都好于Stylesheet的theme,会override

6. ASP.NET除了设计网站和页面的布局和外观,通过设置各种常用的control的属性等等。
为了能够响应,需要编写events , 相应用户的操作:
a) 使用ASP.NET编写server-side端的相应就像编写桌面应用程序及其类似;

b) aspx的事件响应代码有两种形式:
code-inline,code-behind(尽量使用后者, .aspx.cs或aspx.vb结尾,分别代表C#或VB)

c)使用好各种server control之后,将aspx页面各个布局完成之后(就像设计桌面app的UI一样)
只需要在相应的code-behind文件.aspx.cs中添加必要的消息相应函数即可完成需要的逻辑功能(彻底变成了桌面app编程,很方便简单!)
event响应函数的参数:object sender(表示激发该事件的对象object), System.EventArgs e(事件处理函数需要的参数,使用其属性有强大功能如e.cancle)

Page_Load事件的Page的属性Page.IsPostBack可以判断是否在加载页面的时候有点击Button之类的post。

d)查找控件的各种事件(lightning):
imagebutton的click事件,事件参数传来了e.x.tostring(),e.y.tostring()<点的横纵坐标>

e)数据源控件如SqlDataSource,以及可以绑定数据源的数据绑定控件DataList等
这些绑定的数据有一个数据事件ItemDataBound(当从数据源绑定传过来的数据时使用,可以在其中设置,不现实数据库中的某些数据。)如判断后隐藏空的字段,隐藏部分菜单。

f)indirect events:(SqlDataSource)
非直接事件,在用户操作之后激发的事件,通常在数据更新等等。

g)Canceling events:(deleting,inserting,updating等等)
正在发生的事件,可以在其中e.cancel=true将事件终止掉!

h)ASP.NET中的事件有几种:
page,control,还有称作application event(Global Events):
这些事件的响应保存在先前介绍过得global.asax文件中(各个页面相同的事件响应,而web.config为整个站点的参数设置两者都是全局的作用域)

7.Reading Data

a)source of data:

Relational data(tables with data):
Microsoft Access,Microsoft SQL Server,Oracle,SAP,DB2,MySQL等;
<tables仅用来保存数据,关于数据如何存储,各个字段的名称和定义都保存在单独的文件中叫做metadata>

tree structures:
XML files, Windows registry, Windows file system等
<metadata is included with the data. 是self-describing的>

misc types:
Excel files, text files, html, pdf等;

关于数据的安全和认证:
两种authentication
Windows Authentication and SQL Authentication(or Mixed)


b)ASP.NET中的data controls(server-side controls),要使用数据,需要:
data source control(负责链接数据库并从数据源读取或想数据源写数据,进行数据逻辑操作);
data bound control(负责显示数据,把数据render到页面中)
因此要在页面中使用database中的数据,通常是data source control与data bound control两者结合使用。

c)data source control

功能:封装了完成底层数据库的链接和增删改查等一系列的操作,并交返回的数据交给data bound control用于显示。
<ASP.NET的data source controls建立一个ADO.NET对象,这个ADO.NET对象负责底层所有数据操作的逻辑,ASP.NET2.0之前这些都是用户自己来做的,现在将这些封装到了一个个的data source control objects中,使用时只需要drag-and-drop以及configuration就可以轻松完成>


各种data source controls:
Sql DataSource control:
主要用于操作relational databases,使用的provider可是是各种数据库系统,如MS SQL Server, Oracle等(这些实现都是written in managed code在.NET Framework中),初次之外ASP.NET2.0还提供一种additional provider可以communicate with any database that is OLEDB(Object Linking and Embedding for Databases)-enabled.
OLE DB是一个老的标准,它包括几乎所偶的数据库管理系统如IBM DB2,MySQL,SAP等(由于OLEDB不是使用managed code编写的,因此无法使用.NET技术,我们期望第三方开发更多的data source control来提供managed code既可以使用的controls和provider)

AccessDataSource control: MS Access;
XMLDataSource: XML sources;

SiteMapDataSource: 用于sitemap
ObjectDataSource: 用于链接用户自定义的business objects;




d)data bound controls:

data bound controls负责将data source control操作的数据render到页面中,并可以提供一些封装好的常用的操作,尽管data souce controls和data bound controls可以完全地混合使用,但选择的时候需要考虑各自的特点尽量match.

注意:其他一些controls例如text boxes等也可以是data-bound,但他们不是直接的data bound controls,使用它们绑定数据,最好是和data bound control结合使用,template中添加这些控件来一起结合使用。

常用的一些data bound controls(注意这些控件主要目的是显示render数据到页面中,此外还提供部分逻辑功能,同时注意它们和其他一些控件的功能区别,如DataList和List控件,后者仅仅用来让用户可以选择):
1. 表格型的tabular controls:
GridView:每个recorder显示一行,每个cell显示其一个字段内容 (一般是table数据)
DataList:每个cell中显示所有的每个recorder信息 (可以是table或者tree)
Repeater (可以是table或者tree)

2. single record display controls(单record显示控件,经常用于单独reading,editing/updating,creation等功能):
DetailsView: (可以是table或者tree)
FormView: (可以是table或者tree)

3. Selection List Controls主要用于接受用户的selection,通常仅显示每个record的one field,仅仅方便用户选择,不提供改变数据功能。
ListBox: (可以是table或者tree)
DropDownList:

4. Tree Controls;
通常用于显示tree型的nodes而不是tables(经常用于navigation等)
Menu: (tree)
TreeView: (tree)
SiteMapPath: 提供breadcrumbs功能 (tree,且是Web.sitemap文件)




e) data source controls和data bound controls Work Together
选择的时候,需要考虑自己的功能要求,同时考虑两者之间要match
在VWD中添加data controls的3中方法:
drag a data source control and walk through its wizard;
drag a data bound control and wizard;
或者直接打开database explorer,选择某个fields并配置它们,自动添加了data source和data-bound control




f)VWD中添加data source controls

drag and drop, 然后configure Data source, 在wizard中设置。

关于connetction string的保存,尽量保存到web.config中,最后aspx中
<asp:sqldatasource id=”SqlDataSource1” runat=”server”
connectionstring=”<%$ ConnectionStrings:WroxUnited %>”>
SelectCommand=”SELECT * FROM [Fixtures]”
</asp:sqldatasource>

Web.Config中
<connectionStrings>
<add name=”WroxUnited”
connectionString=”Data Source=.\SQLEXPRESS;
AttachDbFilename=|DataDirectory|WroxUnited.mdf;
Integrated Security=True;
Connect Timeout=30;
User Instance=True”/>
providerName=”System.Data.SqlClient” />
</connectionStrings>





g)data bound controls;

××××××第一部分:绑定数据方便用户选择×××××
Data-Bound Selection Lists:这些控件通常用来显示一个列表,供用户选择一个值,列表中的值可以用于自己定义的静态或者从数据库中选择的动态数据;
(有DropDownList,ListBox,RadioButtonList,CheckBoxList),重要的属性DataTextField,DataValueField,AutoPostBack(选择后自动提交)
三种方法添加列表中的元素:
1.coding静态的;
<asp:DropDownList id=”DropDownList1” runat=”server”>
<asp:ListItem Value=”GK”>Goalkeeper</asp:ListItem>
<asp:ListItem Value=”LB”>Left Back</asp:ListItem>
<asp:ListItem Value=”RB”>Right Back</asp:ListItem>
<asp:ListItem Value=”CD” Selected=”True”>Central Defender</asp:ListItem>
</asp:DropDownList>
2.将items保存到一个array中:
aspx.cs中,
protected String[] MyStates ={ “AK”, “AL”, “AR” };
protected void Page_Load(object sender, EventArgs e)
{
DropDownList1.DataBind();
}
aspx中,
<asp:DropDownList ID=”DropDownList1” runat=”server”
DataSource=”<%# MyStates %>” >
3.将其绑定到一个data source control上
例如需要一个SqlDataSource,configure完sql语句之后,在DropDownList中显示,设置该控件的属性DataSourceId,DataTextField,DataValueField


××××××第二部分:显示表格数据×××××
GridView Control:
除了显示表格数据之外,还封装有sorting,paging等功能
添加方法:
可以直接在data explorer中将需要的表格拖拽到designView中,系统会自动生成GridView和SqlDataSource,可以设置各自的属性(edit column, sorting, paging等)
另一种方法,单个独自添加data source control,data bound control.

DataList和Repeater Controls(两者的区别是DataList控件有自己默认的formatting和templates,而Repeater控件是全部空白,用户需要在source view中想其中中添加绑定数据的独立控件):
DataList具有template功能,在这里可以设置layout,style以及添加其他独立的控件(如textbox,lab等)
学会如何编辑template,修改其中的内容布局,增加各种独立的server control,以及为这些控件绑定显示数据库中的内容。


<因此使用DataList控件比使用Repeater控件要简单一些>


××××××第三部分:显示具体的单个条目×××××
DetailsView控件和FormView控件(两者用于显示单独一个条目,两者几乎差不多),都可以通过编辑template修改显示,同时具有Edit,New,Delete等操作项功能(使用JavaScript实现)



h)Data Controls with Parameters:
设置data source的database configuration中添加where语句,显示局部内容

i)多个控件一起使用,传递参数(此传递非ajax,需要完全刷新页面)
master-child
master的data-bound controls设置自己的data source control;
child的data-bound controls设置自己的data source control,在config数据库的时候设置其WHERE语句中能够接受master控件传递的值。
(有些master使用控件需要enable AutoPostback)




j)绑定XML Data:
(sitemap是该方法的一个特例);
首先建立自己的xml数据,可以保存到App_Data中
然后可以在页面中添加data bound controls(Menu, SiteMapPath, TreeView)
可以添加data source controls,配置其指向自己的xml文件;
在data bound controls等控件中要显示xml各个node的内容,需要再设置Edit TreeNode Binding
添加选择显示节点的值。

总结:

本章讲述了的数据控件:
data source controls:
SqlDataSource, AccessDataSource, XmlDataSource, SiteMapDataSource, ObjectDataSource;

data bound controls:
表格:GridView, DataList, Repeater;
细节:DetailsView, FormView;
选择:ListBox, DropDownList等等;
树形结构: Menu, TreeView
(sitemap是个特殊的xml树形应用)

8.
。。。








分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics