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属性来设备文件信息。
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特点
|
“Web部件”控件可以用来实现门户网站。工作流和协作经管如今已成为网站首要应用标的目标之一。
ASP.NET”Web部件”的开辟首要向以下3种场景:
n 开辟“Web部件”控件
n 构建采取“Web部件”控件的常规页面
n 实现门户网站中的“Web部件”页面和“Web部件”
所有“Web部件”控件都可以看做是现有ASP.NET办事器控件的一个超集。可以或许在特定景象中以编程体式格式把握“Web部件”控件,开辟者还可以经由过程从System.Web.UI.WebControls.WebParts.WebPart类派生来创建自定义的“Web部件”控件。
一般的网页就可以或许应用“Web部件”。Visual Studio支撑创建包含WebPart控件的页面。
开辟WebPart页面须要为页面添加WebPartManager和若干区域,并为这些区域添加WebPart控件
最后,我们可以经由过程WebPart控件来开辟完全的应用法度。例如,假设要构建一个门户。若是应用WebPart控件,则可以实现可自定义的个性化页面。“Web部件”还合适构建常用的应用法度(如共享记录或文档的应用法度),并可以将其打包公布,然后批量安排到其他公司的网站上。
“Web部件”的架构承担着多方面任务。“Web部件”的职责是充当更高层次的UI元素,所以功能组件被分化为页面经管和区域经管。不合WebPart控件须要调和一致。此外,页面中的每个功能区域凡是须要作为一组控件来处理惩罚(如为了经管布局)。
“Web部件”由区域经管,而区域由WebPartManager经管。只要页面应用了WebPart,非论几许,就都要添加WebPartManager。WebPartManager负责经管和调和区域和区域中的控件。WebPartZone可以或许经管自身控件凑集中的UI元素。
在区域中,ZoneTemplate 用于容纳“Web部件”。若是ZoneTemplate中有常规的ASP.NET控件,那么ASP.NET会按WebPart的情势来包装它。
“Web部件”区域用于经管一组控件的布局。ASP.NET中内建了以下4种区域:
n WebPartZone 包含了经管区域中办事器端控件的根蒂根基功能。这种区域可以或许容纳的办事器端控件和WebPart控件。常规的控件在运行时会由GenericWebPart控件包装,以使它们具有WebPart的行动。
n CatalogZone这种区域(目次区域)用于承载CatalogPart控件。“目次”一般用于经管页面中部件的可见性。CatalogZone控件可以或许按照显示模式来显示和隐蔽其内容。之所以称其为“目次”,是因为它充当了终极用户可以从中选择的控件目次。
n EditorZone 该控件容许终极用户按照小我偏好批改和个性化网页。对网站进行个性化包含设置小我信息(若是诞辰,性别特定的称呼,网站的接见次数等),色彩搭配和布局….EditorZone旨在实现这方面的特点,它也可以或许保存和加载相干的设置,以便用户鄙人次登录时可以或许持续应用。
n ConnectionZone “Web部件”之间往往须要动态连接和通信。ConnectionZone恰是为此而设立的。
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凑集中,以实现主动浮现
|
实践会话状况:
1. 新建ASP.NET空Web应用法度 SeesionState.
2. 添加一个Web窗体 将其定名为Default.aspx。在这个页面中添加一个文本框,以便输入要存储在会话状况的值。为这个文本框添加一个标签。
3. 添加两个按钮盒两个标签。
4. 添加一个字符串成员变量。
5. 运行这个页面。在文本框中键入一些文本,然后单击“添加到会话状况”。会发明成员变量不克不及保存数据。页面对象的生命周期十分短暂。只在恳求的处理惩罚时代有效,随后便会被烧毁,成员变量在恳求处理惩罚完毕后也会立即清除。我们提交后获得的新页面是一个新对象,成员变量也会从头初始化。
6. 用会话状况可以解决这个题目。编写代码将字符串存储在会话状况中。
7. 运行成果 数据获得保存。
应用ADO.NET对象,数据绑定控件和会话状况:
1. 完全禁用
2. 在过程中存储会话状况
3. 在状况办事器中存储会话状况
4. 在数据库中存储会话状况
我们可以经由过程IIS的ASP.NET会话状况设备对象在web.config文件中设备
接见当前客户端的会话状况
|
应用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开发