仓酷云

标题: ASP.NET教程之ASP.NET2.0数据操纵之母板页和站点导航... [打印本页]

作者: 再现理想    时间: 2015-1-16 22:45
标题: ASP.NET教程之ASP.NET2.0数据操纵之母板页和站点导航...
因为二次编译器太复杂,那么建议只是在安装程序的时候编译一次,而不类似java那样运行就编译。并且我觉得,一次痛苦,总比多次低效率要舒服多了。asp.net|导航|数据|站点  导言
</STRONG>
  一般,用户友爱的本性化站点都有着分歧的,站点一致的页面结构和导航系统。Asp.net2.0引进的两个新特征给我们在一致站点的页面结构和站点导航上供应了复杂而无效的工具,它们是母板页和站点导航。母板页同意开辟者创立一致的站点模板和指定的可编纂地区。如许,aspx页面只必要给模板页中指定的可编纂地区供应添补内容就能够了,一切在母板页中界说的其他标志将呈现在一切利用了该母板页的aspx页面中。这类形式同意开辟者能够一致的办理和界说站点的页面结构,因而能够简单的失掉具有一致的视觉和感到的页面而且还易于更新。

  站点导航体系同意开辟者界说站点舆图并供应了API以便经由过程程序查询站点舆图信息。新的导航控件包含Menu,TreeView和SiteMapPath,如许能够很简单的在一个一样平常的导航用户界面元素里出现全体大概部分站点舆图。我们将利用默许的站点导航供应者,这意味着我们的站点舆图将界说在一个xml格局的文件中。

  为申明这些看法而且使我们的教程的示例站点可用性更佳,让我们经由过程本次课程界说一个站点一致的页面结构,完成一个站点舆图,而且增加导航UI。在这个课程停止时我们的课程示例站点就具有一个幽美的计划效果了。





:本课程的终极功效

  步骤1:创立母板页

  第一步是为我们的站点创立母板页。到今朝为止我们的站点只要一个范例化的DataSet(Northwind.xsd,位于App_Code文件夹),营业逻辑层类库(ProductsBLL.cs,CategoriesBLL.cs等等,这些都在App_Code文件夹里),数据库(NORTHWIND.MDF,位于App_Data文件夹),设置文件(web.config),和一个CSS文件(Style.css)。

  我收拾这些页面和文件以申明后面两次课程中先容的数据会见层和营业逻辑层将会在今后课程的更多细节中重用这些示例。





:我们项目中的文件

  要创立一个母板页,用右键点击办理计划办理器中的项目称号并选择增加新项。然后从模板列表窗口当选择母板范例而且定名为Site.master





:增加一个母板页到站点中

  在母板页中界说站点一致的页面结构。你能够用计划视图界说你必要的结构大概控件,你还能够手动的在代码视图中增加标志。在我们的母板页中利用了界说在内部文件Style.css中的层叠款式表来界说地位微风格。大概你不晓得上面这些标志如何显现,款式表划定规矩界说了导航用的<div>标签中的内容相对定位在页面的右边而且宽度流动为200像素。


1<%@MasterLanguage="C#"AutoEventWireup="true"CodeFile="Site.master.cs"Inherits="Site"%>
2
3<!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4
5<htmlxmlns="http://www.w3.org/1999/xhtml">
6<headrunat="server">
7<title>WorkingwithDataTutorials</title>
8<linkhref="Styles.css"rel="stylesheet"type="text/css"/>
9</head>
10<body>
11<divid="wrapper">
12
13<formid="form1"runat="server">
14
15<divid="header">
16<spanclass="title">WorkingwithDataTutorials</span>
17<spanclass="breadcrumb">
18TODO:Breadcrumbwillgohere</span>
19</div>
20
21<divid="content">
22<asp:contentplaceholderid="MainContent"
23runat="server">
24<!--Page-specificcontentwillgohere-->
25</asp:contentplaceholder>
26</div>
27
28<divid="navigation">
29TODO:Menuwillgohere
30</div>
31</form>
32</div>
33</body>
34</html>  一个母板页界说了流动的结构和能够被那些利用了母板页的aspx页面添补的可编纂地区,这个可编纂地区是经由过程ContentPlaceHolder控件显现,位于<div>标志中。我们的母板页中只要一个ContentPlaceHolder(MainContent),可是母板页中是能够包括多个ContentPlaceHolder控件的。

  输出下面的标志,切换到计划视图察看母板页的结构。一切的利用了这个母板页的aspx页面城市有如许一致的结构,而MainContent地区是留给aspx页面展示本人才干的中央。





:在计划视图中显现的母板页

  步骤2:给站点增加一个主页

  界说母板页后,我们筹办给站点增加一些aspx页面。让我们从增加我们的首页Degault.aspx入手下手吧。在办理计划办理器中右键点击项目称号而且选择增加新建项目。从模板列表当选择WebForm选项而且定名为Default.aspx。而且,勾上“选择母板页”的复选框。





:增加一个新WebForm而且勾上“选择母板页”的复选框

  点击断定按钮后,将会扣问你新建的这个aspx页面利用哪一个母板页。大概你有多个母板页在你的项目中,可是我们只要一个。





:选择你要利用的母板页

  选择母板页后,新建的aspx会包括上面这些标志:

  Default.aspx


1<%@PageLanguage="C#"MasterPageFile="~/Site.master"AutoEventWireup="true"
CodeFile="Default.aspx.cs"Inherits="_Default"Title="UntitledPage"%>
2<asp:ContentID="Content1"ContentPlaceHolderID="MainContent"
3Runat="Server">
4</asp:Content>  在@Page指令中有一个指向母板页的援用(MasterPageFile=”~/Site.master”),而且aspx页面的标志中包括了一个Content控件对应母板页中界说的ContentPlaceHolder控件,这个Content控件的ContentPlaceHolderID属性映照到指定的ContentPlaceHolder控件。你能够在Content控件中安排你想显现在响应ContentPlaceHolder控件地位的标志。

  设置@Page指令的Title属性为Home而且增加一些接待词到Content控件中:

  Default.aspx
1<%@PageLanguage="C#"MasterPageFile="~/Site.master"AutoEventWireup="true"
CodeFile="Default.aspx.cs"Inherits="_Default"Title="Home"%>
2<asp:ContentID="Content1"ContentPlaceHolderID="MainContent"
3Runat="Server">
4<h1>WelcometotheWorkingwithDataTutorialSite</h1>
5
6<p>Thissiteisbeingbuiltaspartofasetoftutorialsthat
7illustratesomeofthenewdataaccessanddatabindingfeaturesin
8ASP.NET2.0andVisualWebDeveloper.</p>
9
10<p>Overtime,itwillincludeahostofsamplesthat
11demonstrate:</p>
12
13<ul>
14<li>BuildingaDAL(dataaccesslayer),</li>
15<li>UsingstronglytypedTableAdaptersandDataTables</li>
16<li>Master-Detailreports</li>
17<li>Filtering</li>
18<li>Paging,</li>
19<li>Two-waydatabinding,</li>
20<li>Editing,</li>
21<li>Deleting,</li>
22<li>Inserting,</li>
23<li>Hierarchicaldatabrowsing,</li>
24<li>Hierarchicaldrill-down,</li>
25<li>Optimisticconcurrency,</li>
26<li>Andmore!</li>
27</ul>
28</asp:Content>  @Page指令中的Title属性同意我们能够在aspx页面界说题目,即便母板页中已界说了<title>元素。我们还可使用Page.Title的编程体例设置页面的题目。必要注重的是母板页中援用的款式表(如Style.css)会主动校订以使用到每一个aspx页面中,这是与aspx页面的目次和母板页目次之间的干系有关。

  切换到计划视图我们会看到我们的页面将在扫瞄器中的显现效果。注重:在计划视图里,aspx页面的内容只要可编纂地区能够被修正,在母板页界说的非ContentPlaceHolder部分标志被显现成灰色。





:在计划视图中显现的可编纂地区及非可编纂地区

  当Default.aspx页面被扫瞄器会见时,asp.net引擎会集并母板页的内容和aspx页的内容,而且将兼并的内容出现为终极的HTML发送到扫瞄器。当母板页的内容被更新,一切利用了这个母板页的aspx页面会鄙人次被哀求时从头和新的母板页内容兼并。复杂的说,母板页模子同意界说一个一致的结构模板(母板页),当它改动时全部站点会反响这类改动。
  增加更多的页面到站点中

  让我们花一点工夫增加别的的页面到站点中,以便撑持终极的林林总总的课程的示例。这里统共会有凌驾35个示例,以是我们先创立一部分。今后会有良多种别的示例,为了更好的办理这些示例我们给每一个分类增加一个文件夹。如今我们增加三个文件夹:

  BasicReporting
  Filtering
  CustomFormatting

  最初,如所示向办理计划办理器中增加新文件。每增加一个文件的时分记着要勾上“选择母板页”的复选框。



:增加以下文件

  第三步:增加站点舆图

  办理一个由大批网页构成的网站的个中一个应战是要为会见者扫瞄网站供应一个捷径。作为入手下手,站点的导航布局必需被界说。下一步,这个布局必需转换成适于导航的用户界面元素,好比菜单大概地位导航。当有新页面增加到站点和已有的页面被移除的时分这个历程将要修正和校订。

  在asp.net2.0之前,开辟者必要本人创立站点导航布局,保护它而且将它转化为适于导航的用户界面元素。在asp.net2.0里,开辟者能够使用十分天真的且内置的站点导航体系。Asp.net2.0站点导航体系同意开辟者界说一个站点舆图而且供应了能够会见这些信息的API。

  默许的Asp.net站点舆图供应者希冀站点舆图信息存储在xml格局的文件中。可是,创建在供应者模子上的站点导航体系是能够被扩大的以撑持多种体例贮存的站点舆图。JeffProsise的文章,TheSQLSiteMapProviderYou’veBeenWaitingFor展现了如何创立将站点舆图存储在SQLServer数据库里的供应者;别的一个选择是基于文件体系的站点舆图供应者。

  在这个指南中,我们仍旧利用ASP.NET2.0里默许的站点舆图供应者。要创立站点舆图,在办理计划办理器里右键点击项目称号,选择增加新项,然后选择站点舆图范例。定名为Web.sitemap然后单击增加按钮。





:向你的项目中增加站点舆图

  站点舆图文件是一个xml文件。注重:VisualStudio能够为站点舆图布局供应智能感知。站点舆图文件必需含有<siteMap>作为根节点,它必需最少含有一个<siteMapNode>子节点。这个<siteMapNode>元素又能够包括恣意数目的<siteMapNode>子元素。

  站点舆图摹拟了文件体系。为每一个文件夹增加一个<siteMapNode>元素,而且为每一个aspx页面增加一个<siteMapNode>子元素,云云:

  Web.sitemap:


1
2<siteMapxmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0">
3
4<siteMapNodeurl="~/Default.aspx"title="Home"description="Home">
5<siteMapNodetitle="BasicReporting"
6url="~/BasicReporting/Default.aspx"
7description="BasicReportingSamples">
8<siteMapNodeurl="~/BasicReporting/SimpleDisplay.aspx"
9title="SimpleDisplay"
10description="Displaysthecompletecontents
11ofadatabasetable."/>
12<siteMapNodeurl="~/BasicReporting/DeclarativeParams.aspx"
13title="DeclarativeParameters"
14description="Displaysasubsetofthecontents
15ofadatabasetableusingparameters."/>
16<siteMapNodeurl="~/BasicReporting/ProgrammaticParams.aspx"
17title="SettingParameterValues"
18description="Showshowtosetparametervalues
19programmatically."/>
20</siteMapNode>
21
22<siteMapNodetitle="FilteringReports"
23url="~/Filtering/Default.aspx"
24description="SamplesofReportsthatSupportFiltering">
25<siteMapNodeurl="~/Filtering/FilterByDropDownList.aspx"
26title="FilterbyDrop-DownList"
27description="Filterresultsusingadrop-downlist."/>
28<siteMapNodeurl="~/Filtering/MasterDetailsDetails.aspx"
29title="Master-Details-Details"
30description="Filterresultstwolevelsdown."/>
31<siteMapNodeurl="~/Filtering/DetailsBySelecting.aspx"
32title="DetailsofSelectedRow"
33description="ShowdetailresultsforaselectediteminaGridView."/>
34</siteMapNode>
35
36<siteMapNodetitle="CustomizedFormatting"
37url="~/CustomFormatting/Default.aspx"
38description="SamplesofReportsWhoseFormatsareCustomized">
39<siteMapNodeurl="~/CustomFormatting/CustomColors.aspx"
40title="FormatColors"
41description="Formatthegridscolorsbased
42ontheunderlyingdata."/>
43<siteMapNode
44url="~/CustomFormatting/GridViewTemplateField.aspx"
45title="CustomContentinaGridView"
46description="ShowsusingtheTemplateFieldto
47customizethecontentsofafieldinaGridView."/>
48<siteMapNode
49url="~/CustomFormatting/DetailsViewTemplateField.aspx"
50title="CustomContentinaDetailsView"
51description="ShowsusingtheTemplateFieldtocustomize
52thecontentsofafieldinaDetailsView."/>
53<siteMapNodeurl="~/CustomFormatting/FormView.aspx"
54title="CustomContentinaFormView"
55description="IllustratesusingaFormViewfora
56highlycustomizedview."/>
57<siteMapNodeurl="~/CustomFormatting/SummaryDataInFooter.aspx"
58title="SummaryDatainFooter"
59description="Displaysummarydatainthegridsfooter."/>
60</siteMapNode>
61
62</siteMapNode>
63
64</siteMap>  站点舆图界说了这个站点的导航布局,它是条理布局的以便形貌站点中林林总总的地区。在Web.sitemap中的每一个<siteMapNode>元素形貌了一个站点布局中的一个地区。





0:站点舆图形貌了一个条理的导航布局

  Asp.net经由过程DotNET框架中的SiteMap类显现站点舆图的布局。这个类有一个CurrentNode属性,它前往以后用户正在会见的节点的信息;RootNode属性前往站点舆图的根节点信息(在我们的站点舆图中是Home)。CurrentNode呵RootNode属性都前往SiteMapNode实例,SiteMapNode包括ParentNode,ChildNodes,NextSibling,PreviousSibling等属性,这些属性同意站点舆图的条理能够被遍历。
  步骤4:使用站点舆图显现菜单

  在asp.net2.0中我们能够像asp.net1.x一样,有多种编程体例能够会见数据,还能够经由过程新的数据源控件会见。

  这里有多个内置的数据源控件,好比用来会见干系数据库数据的SqlDataSource控件,用来会见类所供应的数据的ObjectDataSoruce控件等等。你还能够创立你本人的自界说数据源控件。

  数据源控件作为你的aspx页面和底层数据的代办署理。为了显现数据源控件查询到的数据,我们要增加其他Web控件到页面上,而且将它和数据源控件绑定。要绑定一个Web控件到一个数据源控件,只必要复杂的设置这个Web控件的DataSourceID属性值为数据源控件的ID属性值。

  为了猎取站点舆图中的数据,asp.net供应了SiteMapDataSource控件,它同意我们绑定一个Web控件来显现我们的站点舆图。TreeView和Menu这两个Web控件经常用来供应导航用户界面。要绑定站点舆图中的数据到这两个控件,增加一个SiteMapDataSource控件到页面中,设置TreeView大概Menu控件的DataSourceID属性值为SiteMapDataSource控件的ID属性值就能够了。举个例子,我们能够用上面这些标志将Menu控件到母板页中:


1<divid="navigation">
2<asp:MenuID="Menu1"runat="server"
3DataSourceID="SiteMapDataSource1">
4</asp:Menu>
5
6<asp:SiteMapDataSourceID="SiteMapDataSource1"runat="server"/>
7</div>  为了天生优化的HTML,我们能够绑定SiteMapDataSource控件到Repeater控件,以下:
1<divid="navigation">
2<ul>
3<li><asp:HyperLinkrunat="server"ID="lnkHome"
4NavigateUrl="~/Default.aspx">Home</asp:HyperLink></li>
5
6<asp:Repeaterrunat="server"ID="menu"
7DataSourceID="SiteMapDataSource1">
8<ItemTemplate>
9<li>
10<asp:HyperLinkrunat="server"
11NavigateUrl="<%#Eval("Url")%>">
12<%#Eval("Title")%>
13</asp:HyperLink>
14</li>
15</ItemTemplate>
16</asp:Repeater>
17</ul>
18
19<asp:SiteMapDataSourceID="SiteMapDataSource1"
20runat="server"ShowStartingNode="false"/>
21</div>
  SiteMapDataSource控件每次前往站点舆图条理中的一级,从站点舆图中的根节点入手下手(在我们的站点舆图中是Home),然后是下一个级(BasicReporting,FilteringReports和CustomizedFormatting)等等。

  当将SiteMapDataSource绑定到Repeater时,它遍历第一级而且用ItemTemplate显现第一级的每一个SiteMapNode实例。我们可使用Eval(属性称号)会见SiteMapNode的细节,如许我们就能够失掉SiteMapNode的Url和Title属性给HyperLink控件。

  上面显现的是下面利用Repeater控件例子天生的HTML标志:


1<li>
2<ahref="/Code/BasicReporting/Default.aspx">BasicReporting</a>
3</li>
4
5<li>
6<ahref="/Code/Filtering/Default.aspx">FilteringReports</a>
7</li>
8
9<li>
10<ahref="/Code/CustomFormatting/Default.aspx">
11CustomizedFormatting</a>
12</li>
  从下面能够看出,站点舆图的第二级节点(BasicReporting,FilteringReports和CustomizedFormatting)被显现而不是第一个。

  这是由于SiteMapDataSource控件的ShowStartingNode属性被设为false,招致SiteMapDataSource跳过了站点舆图的根节点取而代之的是从站点舆图的条理的第二级入手下手前往信息。

  为了显现BasicReporting,FilteringReports和CustomizedFormatting的子SiteMapNode,我们能够向先前的Repeater的ItemTemplate里增加别的一个Repeater。第二个Repeater将绑定到SiteMapNode实例的子结点属性,以下:


1<asp:Repeaterrunat="server"ID="menu"DataSourceID="SiteMapDataSource1">
2<ItemTemplate>
3<li>
4<asp:HyperLinkrunat="server"
5NavigateUrl="<%#Eval("Url")%>">
6<%#Eval("Title")%></asp:HyperLink>
7
8<asp:Repeaterrunat="server"
9DataSource="<%#((SiteMapNode)
10Container.DataItem).ChildNodes%>">
11<HeaderTemplate>
12<ul>
13</HeaderTemplate>
14
15<ItemTemplate>
16<li>
17<asp:HyperLinkrunat="server"
18NavigateUrl="<%#Eval("Url")%>">
19<%
#Eval("Title")%></asp:HyperLink>
20</li>
21</ItemTemplate>
22
23<FooterTemplate>
24</ul>
25</FooterTemplate>
26</asp:Repeater>
27</li>
28</ItemTemplate>
29</asp:Repeater>
  这两个Repeater天生的HTML标志(为了节俭篇幅一些标志被移除):


1<li>
2<ahref="/Code/BasicReporting/Default.aspx">BasicReporting</a>
3<ul>
4<li>
5<ahref="/Code/BasicReporting/SimpleDisplay.aspx">
6SimpleDisplay</a>
7</li>
8<li>
9<ahref="/Code/BasicReporting/DeclarativeParams.aspx">
10DeclarativeParameters</a>
11</li>
12<li>
13<ahref="/Code/BasicReporting/ProgrammaticParams.aspx">
14SettingParameterValues</a>
15</li>
16</ul>
17</li>
18
19<li>
20<ahref="/Code/Filtering/Default.aspx">FilteringReports</a>
21
22</li>
23
24<li>
25<ahref="/Code/CustomFormatting/Default.aspx">
26CustomizedFormatting</a>
27
28</li>
  利用的CSS作风选择自RachelAndrew的书:TheCSSAnthology:101EssentialTips,Tricks,&Hacks,<ul>和<li>元素的作风将显现以下:





1:用两个Repeater和一些CSS显现的菜单

  这个菜单在母板页中界说的,绑定了在Web.sitemap中界说的站点舆图,这意味着一切站点舆图的修正会当即反响到一切利用了Site.master母板页的页面。
<P>  关失落视图形态

  一切的asp.net控件能够随便的坚持它们的形态到ViewState(译注:当原文中接纳的是开首字母年夜写的ViewState将不翻译)中,终极天生HTML时它被系列化并保留在一个埋没的表单域中。控件用ViewState来影象它们在页面前往时被程序改动的形态,好比Web控件绑定的数据。假如视图形态同意信息能够在页面前往时坚持,它会增年夜发送到客户端HTML代码的尺寸,假如在没有切实的监控下会使页面收缩得很凶猛。数据显现控件-特别是GridView控件-会明显地增添大批的分外的标志到页面中。固然,这些增加大概对宽带用户毫无影响,可是视图形态会给拨号上彀的用户增添几秒钟的提早。

  要察看视图形态的影响,在扫瞄器里翻开这个页面然后检察页面的源代码(关于InternetExplorer,点击”检察”菜单而且选择源代码选项)。你还能够翻开页面跟踪选项以察看这个页面上每一个控件的视图形态。视图形态的信息被系列化并放在位于跟从在<form>标签前面的<div>元素里的名为_VIEWSTATE的埋没表单域中。

  视图形态只在页面上利用了Form时才会被坚持;假如你的aspx页面没有包括<formrunat=”server”>的声明,那末最初发生的HTML标志中将不含有VIEWSTATE埋没表单域。

  母板页发生的VIEWSTATE埋没表单域也许有1800个字节。这些分外的数据次要是SiteMapDataSource控件为Repeater控件供应的数据内容发生的。大概1800字节摆布看起来还不算良多,可是利用了GridView而且利用了良多字段和纪录的视图形态很简单就收缩10倍或更多。

  能够将EnableViewState属性设为false在页面级大概控件级封闭视图形态,从而能够削减发生的标志的巨细。Web控件使用视图形态在页面前往时坚持要绑定到数据显现控件的数据,当封闭了数据显现控件的视图形态后,在每次页面前往时都必需从头绑定命据到控件。在asp.net1.x的时分这个职责落到开辟者身上;在asp.net2.0里,页面前往时,数据显现控件会在需要的时分从头绑定命据。

  设置Repeater控件的EnableViewState为false能够削减页面的视图形态。能够经由过程属性窗口设置大概在代码视图内行动修正。经由过程这些改动,Repeater标志将会像如许:

1<asp:Repeaterrunat="server"ID="menu"DataSourceID="SiteMapDataSource1"EnableViewState="False">
2<ItemTemplate>
3<i>ItemTemplatecontentsomittedforbrevity</i>
4</ItemTemplate>
5</asp:Repeater>
  经由这些变更,页面发生的视图形态削减到52个字节,削减了97%的视图形态数据!在这个指南系列里我会封闭一切数据控件的视图形态以削减发生标志的巨细。在年夜多半例子里会在没有提醒的情形下将EnableViewState属性设为false。

  唯一当数据Web控件必需翻开它的视图形态才干供应希冀的功效的情形下我们才会商。

  步骤5:增加breadcrumb导航

  为完成母板页,让我们给每一个页面增加一个breadcrumb导航UI元素。breadcrum导航会疾速的显现用户以后在站点中的地位。增加一个breadcrumb导航在asp.net2.0中是复杂的-只需增加一个SiteMapPath控件到页面上就能够了;不必要更多的代码。

  在我们的站点中,增加这个控件到头部的<div>标签中:

1<spanclass="breadcrumb">
2<asp:SiteMapPathID="SiteMapPath1"runat="server">
3</asp:SiteMapPath>
4</span>
  breadcrum导航控件显现了用户以后会见的页面和它的父级节点,直至到根节点(在我们的站点舆图中是Home)。





2:使用地位导航控件显现在站点舆图条理中确当前页面及其父页面

  步骤6:给每一个部分增加默许页面

  在我们的站点中这个课程被分红分歧的分类-BasicReporting,Filtering,CustomFormatting等等-每一个分类有一个文件夹而且有对应课程的aspx页面。而且,每一个文件夹里包括一个Default.aspx页面。在这个默许页面中,将显现这个部分的一切课程。好比,我们能够经由过程BasicReporting文件夹里的Default.aspx页面毗连到SimpleDisplay.aspx,DeclarativeParams.aspx和ProgrammaticParams.aspx。这里,我们能够再次利用SiteMap类和一个数据显现控件显现界说在Web.sitemap文件内的站点舆图的信息。

  让我们再次利用Repeater显现一个无序列表,不外此次我们会显现指南的题目和形貌。我们必要在每一个Default.aspx页面反复这些标志和代码,我们能够将这个UI逻辑封装成一个UserControl。在站点中增加一个名为UserControls的文件夹并增加一个名为SectionLevelTutorialListing.ascx的Web用户控件,它包括一下标志:





3:向UserControls文件夹里增加新Web用户控件

  SectionLevelTutorialListing.ascx
1<%@ControlLanguage="C#"AutoEventWireup="true"CodeFile="SectionLevelTutorialListing.ascx.cs"
 Inherits="UserControls_SectionLevelTutorialListing"%>
2<asp:RepeaterID="TutorialList"runat="server"EnableViewState="False">
3<HeaderTemplate><ul></HeaderTemplate>
4<ItemTemplate>
5<li><asp:HyperLinkrunat="server"
6NavigateUrl="<%#Eval("Url")%>"Text="<%#Eval("Title")
7%>"></asp:HyperLink>
8-<%#Eval("Description")%></li>
9</ItemTemplate>
10<FooterTemplate></ul></FooterTemplate>
11</asp:Repeater>
SectionLevelTutorialListing.ascx.cs
1usingSystem;
2usingSystem.Data;
3usingSystem.Configuration;
4usingSystem.Collections;
5usingSystem.Web;
6usingSystem.Web.Security;
7usingSystem.Web.UI;
8usingSystem.Web.UI.WebControls;
9usingSystem.Web.UI.WebControls.WebParts;
10usingSystem.Web.UI.HtmlControls;
11
12publicpartialclassUserControls_SectionLevelTutorialListing:System.Web.UI.UserControl
13{
14protectedvoidPage_Load(objectsender,EventArgse)
15{
16//IfSiteMap.CurrentNodeisnotnull,
17//bindCurrentNodeChildNodestotheGridView
18if(SiteMap.CurrentNode!=null)
19{
20TutorialList.DataSource=SiteMap.CurrentNode.ChildNodes;
21TutorialList.DataBind();
22}
23}
24}

  在后面的Repeater例子中我将SiteMap的数据绑定到Repeater上;固然,这个SectionLevelTutorialListing用户控件也将利用这类办法。在Page_Load事务里,有一个检测程序以确保这是不是是第一次会见该页面(不是前往)而且这个页面的URL要映照到站点舆图中的一个节点。假如页面利用了这个用户控件,那末就没有对应的
<siteMapNode>,SiteMap.CurrentNode会前往null而且将没无数据绑定到Repeater控件。假定我们有一个CurrentNode,我能够将它的ChildNodes汇合绑定到这个Repeater。每一个部分的Default.aspx页面是这个部份内教程的父节点,这些代码会展现每一个部份内教程的毗连和形貌,上面是屏幕截图:

  一旦这个Repeater创立好后,在计划视图里翻开每一个文件夹的Default.aspx页面,将这个用户控件拖到你要显现的中央。





4:用户控件已增加到Default.aspx页面上





5:BasicReporting指南的列表

  总结

  完成站点舆图和母板页后,如今我们的教程站点具有一致的页面结构和导航系统。只管我们的站点有良多页面,可是我们能够会合的更新站点页面结构和站点导航信息。明白一点,页面结构信息在母板页Site.master中界说,站点舆图在Web.sitemap中界说。我们不必要写任何代码就完成了站点页面结构和导航机制,VisualStudio供应了所见即所得的计划时撑持。

  完成了数据会见层和营业逻辑层而且界说了一个一致的页面结构和站点导航体系,下一步我们将探究通用报表形式。在接上去的三个指南里我们将会看到基础报表义务-用GridView,DetailsView和FormView控件显现从营业逻辑层猎取的数据。

Java欺骗了我们那么多年,如今的多核时代,我认为它气数已尽!
作者: 再现理想    时间: 2015-1-19 22:36
PHP的源代码完全公开,在OpenSource意识抬头的今天,它更是这方面的中流砥柱。不断地有新的函数库加入,以及不停地更新,使得PHP无论在UNIX或是Win32的平台上都可以有更多新的功能。它提供丰富的函数,使得在程式设计方面有着更好的资源。目前PHP的最新版本为4.1.1,它可以在Win32以及UNIX/Linux等几乎所有的平台上良好工作。PHP在4.0版后使用了全新的Zend引擎,其在最佳化之后的效率,比较传统CGI或者ASP等技术有了更好的表现。
作者: 金色的骷髅    时间: 2015-1-25 10:06
通过这次激烈的讨论,我从大家身上学到了太多,开阔了眼界,不管是支持我的还是骂我的,都感谢你们。
作者: 爱飞    时间: 2015-2-2 21:19
如今主流的Web服务器软件主要由IIS或Apache组成。IIS支持ASP且只能运行在Windows平台下,Apache支持PHP,CGI,JSP且可运行于多种平台,虽然Apache是世界使用排名第一的Web服务器平台。
作者: 柔情似水    时间: 2015-2-8 06:00
由于JSP/Servlet都是基于Java的,所以它们也有Java语言的最大优点——平台无关性,也就是所谓的“一次编写,随处运行(WORA–WriteOnce,RunAnywhere)”。除了这个优点,JSP/Servlet的效率以及安全性也是相当惊人的。
作者: 飘灵儿    时间: 2015-2-24 11:37
目前在微软的.net战略中新推出的ASP.net借鉴了Java技术的优点,使用CSharp(C#)语言作为ASP.net的推荐语言,同时改进了以前ASP的安全性差等缺点。但是,使用ASP/ASP.net仍有一定的局限性,因为从某种角度来说它们只能在微软的WindowsNT/2000/XP+IIS的服务器平台上良好运行(虽然像ChilliSoft提供了在UNIX/Linux上运行ASP的解决方案.
作者: 分手快乐    时间: 2015-3-15 04:28
ASP是把代码交给VBScript解释器或Jscript解释器来解释,当然速度没有编译过的程序快了。
作者: 活着的死人    时间: 2015-3-21 18:13
关于ASP.NET功能上,ASP.NET比微软以前的ASP(96年出现)有更强大的library,更好的稳定性。ASP.NET可以使用.NETFramework中所有组件(也就是说.NET能实现的,ASP.NET一样能实现)。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2