当前位置:编程学习 > C#/ASP.NET >>

asp.net基础入门篇之四

12 个性化
12.1 为访客供给个性化办事
12.2 ASP.NET中的个性化
12.2.1 用户设备文件

时候无和私,汗青无情用户设备文件时ASP.NET个性化办事的核心。

12.2.2 个性化供给法度

生命的黎明是乐土,芳华才是真正的天堂。PersonalizationProvider抽象类

12.3 个性化功能的应用

个性化功能的应用很是简单。我们在web.config中定义个性化属性。ASP.NET会主动生成一个类,以便利开辟者经管个性化设置。

12.3.1 在web.config中定义设备文件

假定我们设计网站时决意跟踪用户以下信息

-- 登录次数(整型)

-- 用户名(字符串)

-- 性别(布尔值)

-- 诞辰(日期)

那么以上属性可以如许在web.config中定义:

 代码如下 复制代码

<system.web>

<profile automaticSaveEnabled=”True”>

<add name=”NumVisits” type=”System.Int32”/>

<add name=”UserName” type=”System.String”/>

<add name=”Gender” type=”System.Boolean”/>

<add name=”Birthday” type=”System.DateTime”/>

</profile>

</system.web>

在web.config文件中定义完属性后,便可以经由过程当前HttpContext的Profile属性来设备文件信息。

12.3.2 设备文件信息的应用

ProfileBase可以或许默示web.config中定义的设备文件信息。可以像下面如许应用GetPropertyValue和SetPropertyValue办法来接见设备文件属性;

 代码如下 复制代码

Protected void Page_Load(object sender,EventArge e)

{

ProfileBase profile = HttpContext.Current.Profile;

String name = (string)profile.GetPropertyValue(“Name”);

If(name!=null)

{

Response.Write(“Hello ”+ name);

}

}

12.3.3 设备文件变革的保存

 代码如下 复制代码

ProfileBase profile = HttpContext.Current.Profile;

Profile.SetPropertyValue(“Name”,this.TextBoxName.Text);

profile.Save();

12.3.4 设备文件与用户

用户和设备文件信息时经由过程用户标识来接洽关系的。默认景象下,ASP.NET会应用HttpContext中的User.Identity.Name来作为数据存储的键。业正因为此,设备文件一般只供给给经由过程身份验证的用户应用。

不过Asp.NET也支撑匿名设备文件。这也是web.config中设备的。匿名设备文件跟踪机制默认会采取Cookie。然而,可以使ASP.NET采取重整的URL。重整的URL是一种包含某种键的URL,这个键可以或许标识客户端,并随恳求回发至办事器。

应用设备文件:

1. 创建ASP.NET Web应用法度 MakeItPersonal

2. 为使个性化功能正常工作,Visual Studio会创建一个本地数据库。

3. 更新web.config文件,在<profile>元素中添加设备文件属性。

 代码如下 复制代码

<profile>

<providers>

<clear/>

<add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/"/>

</providers>

<properties>

<add name="Theme" type="System.String"/>

<add name="Name" type="System.String"/>

<add name="Birthdate" type="System.DateTime"/>

<group name="Address">

<add name="StreetAddress" type="System.String"/>

<add name="City" type="System.String"/>

<add name="State" type="System.String"/>

<add name="ZipCode" type="System.String"/>

</group>

</properties>

</profile>

<!--启用匿名个性化跟踪功能-->

 代码如下 复制代码

<anonymousIdentification enabled="true"

cookieName=".ASPXANONYMOUSUSER"

cookieTimeout="120000"

cookiePath="/"

cookieRequireSSL="false"

cookieSlidingExpiration="true"

/>

</system.web>

protected void Page_Load(object sender, EventArgs e)

{

if (!this.IsPostBack)

{

ProfileBase profile = HttpContext.Current.Profile;

//若是存在设备信息则将它们显示出来

string theme = (string)profile.GetPropertyValue("Theme");

this.tbName.Text = (string)profile.GetPropertyValue("Name");

this.tbAddress.Text = (string)profile.GetPropertyValue("Address.StreetAddress");

this.tbCity.Text = (string)profile.GetPropertyValue("Address.City");

this.tbState.Text = (string)profile.GetPropertyValue("Address.State");

this.tbZip.Text = (string)profile.GetPropertyValue("Address.ZipCode");

this.DropDownList1.SelectedValue = (string)profile.GetPropertyValue("Theme");

this.Calendar1.SelectedDate = (DateTime)profile.GetPropertyValue("Birthdate");

}

}

protected void btnSub_Click(object sender, EventArgs e)

{

if (this.User.Identity.IsAuthenticated)

{

ProfileBase profile = HttpContext.Current.Profile;

profile.SetPropertyValue("Theme", "SeeingRed");

profile.SetPropertyValue("Name", this.tbName.Text);

profile.SetPropertyValue("Address.StreetAddress", this.tbAddress.Text);

profile.SetPropertyValue("Address.City", this.tbCity.Text);

profile.SetPropertyValue("Address.State", this.tbState.Text);

profile.SetPropertyValue("Address.ZipCode", this.tbZip.Text);

profile.SetPropertyValue("Theme", this.DropDownList1.SelectedValue);

profile.SetPropertyValue("Birthdate", this.Calendar1.SelectedDate);

profile.Save();//保存设备信息

}

}

12.4 快速参考

定义个性化设备文件的设置
在web.config中经由过程<profile>来定义用于建树设备文件架构的名称和类型对
接见设备文件的属性
经由过程当前的HttpContext来获取设备文件对象,并应用GetPropertyValue和SetPropertyValue办法接见
经由过程Cookie跟踪匿名设备文件
在web.config中启用anomymousIdentification,并为须要的设备文件属性添加allowAnonymous特点
13. Web部件
13.1 “Web部件”简史
13.1 “Web部件”的长处

“Web部件”控件可以用来实现门户网站。工作流和协作经管如今已成为网站首要应用标的目标之一。

ASP.NET”Web部件”的开辟首要向以下3种场景:

n 开辟“Web部件”控件

n 构建采取“Web部件”控件的常规页面

n 实现门户网站中的“Web部件”页面和“Web部件”

13.3 “Web部件”控件的开辟

所有“Web部件”控件都可以看做是现有ASP.NET办事器控件的一个超集。可以或许在特定景象中以编程体式格式把握“Web部件”控件,开辟者还可以经由过程从System.Web.UI.WebControls.WebParts.WebPart类派生来创建自定义的“Web部件”控件。

13.3.1 “Web部件”页面的开辟

一般的网页就可以或许应用“Web部件”。Visual Studio支撑创建包含WebPart控件的页面。

开辟WebPart页面须要为页面添加WebPartManager和若干区域,并为这些区域添加WebPart控件

13.3.2 “Web部件”应用法度的开辟

最后,我们可以经由过程WebPart控件来开辟完全的应用法度。例如,假设要构建一个门户。若是应用WebPart控件,则可以实现可自定义的个性化页面。“Web部件”还合适构建常用的应用法度(如共享记录或文档的应用法度),并可以将其打包公布,然后批量安排到其他公司的网站上。

13.4 “Web部件”的架构

“Web部件”的架构承担着多方面任务。“Web部件”的职责是充当更高层次的UI元素,所以功能组件被分化为页面经管和区域经管。不合WebPart控件须要调和一致。此外,页面中的每个功能区域凡是须要作为一组控件来处理惩罚(如为了经管布局)。

13.4.1 WebPartManager与WebPartZone

“Web部件”由区域经管,而区域由WebPartManager经管。只要页面应用了WebPart,非论几许,就都要添加WebPartManager。WebPartManager负责经管和调和区域和区域中的控件。WebPartZone可以或许经管自身控件凑集中的UI元素。

在区域中,ZoneTemplate 用于容纳“Web部件”。若是ZoneTemplate中有常规的ASP.NET控件,那么ASP.NET会按WebPart的情势来包装它。

13.4.2 内建的区域

“Web部件”区域用于经管一组控件的布局。ASP.NET中内建了以下4种区域:

n WebPartZone 包含了经管区域中办事器端控件的根蒂根基功能。这种区域可以或许容纳的办事器端控件和WebPart控件。常规的控件在运行时会由GenericWebPart控件包装,以使它们具有WebPart的行动。

n CatalogZone这种区域(目次区域)用于承载CatalogPart控件。“目次”一般用于经管页面中部件的可见性。CatalogZone控件可以或许按照显示模式来显示和隐蔽其内容。之所以称其为“目次”,是因为它充当了终极用户可以从中选择的控件目次。

n EditorZone 该控件容许终极用户按照小我偏好批改和个性化网页。对网站进行个性化包含设置小我信息(若是诞辰,性别特定的称呼,网站的接见次数等),色彩搭配和布局….EditorZone旨在实现这方面的特点,它也可以或许保存和加载相干的设置,以便用户鄙人次登录时可以或许持续应用。

n ConnectionZone “Web部件”之间往往须要动态连接和通信。ConnectionZone恰是为此而设立的。

13.4.2 内建的”Web部件”

n DeclarativeCatalogPart 在构建WebPart页面时,可以动态调添加或声明部件。

n 终极用户可能会经由过程打开和封闭控件来自定义网站。

n PageCatalogPart 终极用户可能会经由过程打开和封闭控件来自定义网站。

n ImportCatalogPart 应用ImportCatalogPart,用户可以从xml数据导入“Web部件”的描述。

n AppearanceEditorPart 该控件用于编辑与某个WebPart或GenericWebPart接洽关系的外观属性。

n BehaviorEditorPart 该控件实现了对WebPart或GenericWebPart行动的编辑

n LayoutEditorPart 该控件用于编辑与某个WebPart或GenericWebPart接洽关系的布局属性。

n PropertyGridEditorPart 该控件支撑用户编辑WebPart的自定义属性(而其他EditorPart控件只支撑对WebPart类现有属性进行编辑)

应用“Web部件”:

应用网站支撑“Web部件”
针对应用法度的数据库运行aspnet_regsql,以确保启用了设备文件和角色
应用页面支撑WebPart控件
为页面添加WebPartManager
应用“Web部件”页面支撑编辑功能
为页面添加EdiorZone
添加一个能使办事器端控件接管“Web部件”架构经管的区域
为页面添加WebPartZone
容许用户动态地从控件凑集中添加控件
为页面添加CatalogZone,在“编辑模板”模式下添加易做图在目次中呈现的控件
创建“Web部件”

从System.Web.UI.WebControls.WebParts.WebPart类派生子类,然后选择以下随便率性一种办法来浮现内容:

n 在Web部件的Reader办法中浮现HTML

n 在ASP.NET控件,然后将其添加到“WEB部件”的Controls凑集中,以实现主动浮现

状况经管与缓存
14. 会话状况
14.1 何为会话状况
14.2 ASP.NET与会话状况
14.3会话状况简介

实践会话状况:

1. 新建ASP.NET空Web应用法度 SeesionState.

2. 添加一个Web窗体 将其定名为Default.aspx。在这个页面中添加一个文本框,以便输入要存储在会话状况的值。为这个文本框添加一个标签。

3. 添加两个按钮盒两个标签。

4. 添加一个字符串成员变量。

5. 运行这个页面。在文本框中键入一些文本,然后单击“添加到会话状况”。会发明成员变量不克不及保存数据。页面对象的生命周期十分短暂。只在恳求的处理惩罚时代有效,随后便会被烧毁,成员变量在恳求处理惩罚完毕后也会立即清除。我们提交后获得的新页面是一个新对象,成员变量也会从头初始化。

6. 用会话状况可以解决这个题目。编写代码将字符串存储在会话状况中。

7. 运行成果 数据获得保存。

14.4 会话状况与错杂的数据类型

应用ADO.NET对象,数据绑定控件和会话状况:

14.5 会话状况与设备

1. 完全禁用

2. 在过程中存储会话状况

3. 在状况办事器中存储会话状况

4. 在数据库中存储会话状况

14.5.1 禁用会话状况

我们可以经由过程IIS的ASP.NET会话状况设备对象在web.config文件中设备

14.5.2 在过程中存储会话状况
14.5.3 在状况办事器中存储会话状况
14.5.4 在数据库中存储会话状况
14.6 会话状况的跟踪
14.6.1 经由过程Cookie跟踪会话状况
14.6.2 经由过程URL跟踪会话状况
14.6.3 主动检测
14.6.4 应用设备设备文件
14.6.5 会话状况超时
14.7 会话的其他设置
14.8 Wizard控件--会话状况的一种调换规划

14.8 快速参考
接见当前客户端的会话状况
应用Page.Session属性或当前高低文的HttpContext.Session属性
接见当前客户端会话状况中的值
会话状况是一种键/值对凑集。可以经由过程存储数据时应用的键(字符串)来接见响应的数据
在过程中存储会话状况
在web.confgi中编辑seessionState节点特点。将mode设置为Inproc
在状况办事器中存储会话状况
在web.config中编辑sessionState节的特点。将mode设置为StateServer, 并设置stateConnectionString
在SQL Server中存储会话状况
在web.config中编辑sessionState节的特点。将mode设置为SQLServer, 并设置salConnectionString
禁用会话状况
在web.config中编辑sessionState节的特点。将mode设置为Off
应用Cookie来跟踪会话状况
在Web.config中编辑sessionState节的特点。将cookieless设置为false(默认值)
应用URL来跟踪会话状况
在web.config中编辑sessionState节的特点。将cookieless设置为true
设置会话状况超时
在web.config中编辑sessionState节的特点。将timeout设置为超时树(以分钟为单位)MRMY
补充:asp.net教程,.Net开发
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,