日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

探索 ASP.NET Futures_.Net教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:一個(gè)不被flash、select、activex遮擋的、跨frame的無限分級(jí)菜單
一個(gè)不被flash、select、activex遮擋的、跨frame的無限分級(jí)菜單 該菜單改良自著名的chromemenu,可以無限分級(jí),使用方法: 1、添加主菜單項(xiàng) 找到類似下面代碼的部分:

如果你在使用ASP.NET站點(diǎn),同時(shí)又希望它Search Engine Friendly一些,很可能你就希望它有一個(gè)Sitemaps。在這里我們說的不是ASP.NET的SiteMap,而是Sitemaps.org定義的基于XML的Sitemaps協(xié)議,注意這兩個(gè)名字的大小寫以及單復(fù)數(shù),之后我都會(huì)這樣區(qū)分它們。Sitemaps協(xié)議有點(diǎn)類似RSS或者Atom,只不過它描述的不是最近的內(nèi)容更新,而是整個(gè)站點(diǎn)的地圖,主要用來描述特定URL的重要程度、更新時(shí)間及頻率等。搜索引擎如Google是支持Sitemaps的,通過Google Webmaster Tools(以前叫做Google Sitemaps)你可以提交你的站點(diǎn)的Sitemaps,以便Google更好地索引你的網(wǎng)站。

簡單調(diào)用

在ASP.NET Futures (May CTP)之前,如果你想要為你的ASP.NET站點(diǎn)增加Sitemaps支持,恐怕必須自己實(shí)現(xiàn)一個(gè)特殊的頁面(或者HttpHandler)用于讀取ASP.NET SiteMap并輸出為Sitemaps協(xié)議。而現(xiàn)在這工作可以交給ASP.NET Futures的AspNetSiteMapSearchSiteMapProvider來做了,你需要做的僅僅是在web.config中寫上幾句。由于這個(gè)功能屬于ASP.NET Futures中SearchSiteMap這個(gè)類別,所以需要在web.config中對(duì)該節(jié)進(jìn)行配置:

以下為引用的內(nèi)容:

<microsoft.web.preview>
<searchSiteMap enabled="true">
<providers>
<add name="Navigation" type="Microsoft.Web.Preview.Search.AspNetSiteMapSearchSiteMapProvider, Microsoft.Web.Preview"/>
</providers>
</searchSiteMap>
</microsoft.web.preview>

在這個(gè)配置里面,我們啟用了SearchSiteMap,然后配置了一個(gè)名為"Navigation"的Provider,此Provider使用AspNetSiteMapSearchSiteMapProvider類,就這么簡單,和配置任何其他Provider的形式完全一致。之后你還需要確保一下有關(guān)的HttpHandler配置好了,如果你新建網(wǎng)站時(shí)使用的模板是ASP.NET Futures的,那么HttpHandler就應(yīng)該配置好的了,配置信息如下:

以下為引用的內(nèi)容:

<add verb="*" path="SearchSiteMaps.axd" type="Microsoft.Web.Preview.Search.SearchSiteMapHandler" validate="True"/>

這時(shí)候,如果你的網(wǎng)站已經(jīng)正常啟用ASP.NET自身的SiteMap功能,例如使用靜態(tài)的Web.sitemap,那么訪問SearchSiteMap.axd就應(yīng)該能看到按照Sitemaps協(xié)議輸出的結(jié)果。這時(shí)候或許你會(huì)很奇怪,為什么結(jié)果只有一條記錄呢?這就是Sitemaps的遞歸調(diào)用了,這個(gè)主Sitemaps僅僅聲名了我們之前配置的那個(gè)名為"Navigation"的Sitemaps的地址,也就是SearchSiteMaps.axd?sitemap=Navigation。打開這個(gè)地址,你會(huì)發(fā)現(xiàn)仍然是一個(gè)Sitemaps,它里面包含的就是ASP.NET SiteMap提供的數(shù)據(jù)了。

深入看看

接下來,我們用Reflector來看看Microsoft.Web.Preview.Search下面的一些類的實(shí)現(xiàn)方式。我不準(zhǔn)備詳細(xì)分析代碼了,因?yàn)榇a都很簡單,直接說說看完的結(jié)果吧。如果你之前瀏覽根據(jù)SiteMap生成的Sitemaps時(shí)發(fā)現(xiàn)少了些東西,在這里你就知道如何把這些項(xiàng)目補(bǔ)充上去了。Sitemaps協(xié)議中關(guān)于一個(gè)URL能夠包括以下幾樣信息:

地址:也就是URL本身

最后更新時(shí)間

更新頻率:此URL的內(nèi)容多久更新一次

重要程度:一個(gè)0到1的值,默認(rèn)值為0.5,搜索引擎并不一定根據(jù)這個(gè)值來判斷URL的真正重要程度

然而自動(dòng)生成的Sitemaps僅僅包括前兩項(xiàng)信息,如果我們需要后兩項(xiàng)信息就需要手動(dòng)增加。怎樣手動(dòng)增加呢?因?yàn)镾iteMapNode類似于字典,能夠訪問this [string key],所以只要SiteMapNode[]存在"lastModified"/"changeFrequency"/"priority"這幾個(gè)值就能自動(dòng)輸出到Sitemaps中,而且"lastModified"會(huì)覆蓋對(duì)應(yīng)Page的aspx文件的真實(shí)最后更新時(shí)間。

簡單舉例說明這功能怎么用,假設(shè)你使用的是靜態(tài)的Web.sitemap,我們已經(jīng)習(xí)慣這樣定義一個(gè)SiteMapNode:

以下為引用的內(nèi)容:

<siteMapNode url="Default.aspx" title="Welcome" description="" />

而增加特定的屬性只需要這樣定義:

以下為引用的內(nèi)容:

<siteMapNode url="Default.aspx" title="Welcome" description="" changeFrequency="daily" priority="0.8" />

支持Dynamic Data

上面說了那么多,也就僅僅能做到支持系統(tǒng)自帶的SiteMap,而實(shí)際上SearchSiteMap還能夠?qū)ynamic Data提供特殊的支持。Dynamic Data簡單易用,好像Ruby on Rails那樣支持scaffolding,預(yù)覽了ASP.NET將來在敏捷方面的發(fā)展。有關(guān)Dynamic Data Control的詳細(xì)信息,請(qǐng)參考Dflying的文章,我們這里僅討論SearchSiteMap的支持:

ASP.NET Futures初探——動(dòng)態(tài)數(shù)據(jù)控件(Dynamic Data Control):入門

ASP.NET Futures初探——動(dòng)態(tài)數(shù)據(jù)控件(Dynamic Data Control):深入一些

需要支持Dynamic Data的話,首先你要實(shí)現(xiàn)自己的DynamicDataSearchSiteMapProvider。大家不要一看到要繼承自系統(tǒng)類實(shí)現(xiàn)自己的類就覺得是非常復(fù)雜的事情,其實(shí)這里我們僅需要override掉一個(gè)函數(shù),也就是DynamicDataSearchSiteMapProvider.DataQuery()。在這個(gè)函數(shù)中,我們需要返回一個(gè)IEnumerable,其中的元素需要具有主鍵列名屬性以及以下屬性:

以下為引用的內(nèi)容:
SiteMapLastModified
SiteMapChangeFrequency
SiteMapPriority

你很可能會(huì)問,為什么要是不確定類型的IEnumerable而不是確定類型的List<>呢?想想.NET Framework的什么部分用IEnumerable用得最多吧,那就是LINQ。如果你在QueryData()中直接使用LINQ來篩選數(shù)據(jù),你就不需要?jiǎng)?chuàng)建自定義類型并且自己填充IEnumerable了。況且,主鍵列名也不是確定的,如果用一個(gè)屬性記錄其名稱用另外一個(gè)屬性記錄其值那就很麻煩了,所以ASP.NET Futures選擇了上述充分發(fā)揮LINQ優(yōu)勢(shì)的做法。

最后,我個(gè)人感覺SearchSiteMapProviderBase的設(shè)計(jì)有點(diǎn)問題,它作為AspNetSiteMapSearchSiteMapProvider與DynamicDataSearchSiteMapProvider的基類,其中包括QueryData()方法,然而此方法只有DynamicDataSearchSiteMapProvider用到,很顯然就應(yīng)該將它放置到DynamicDataSearchSiteMapProvider里面。

分享:學(xué)習(xí)asp.net之SQL語句查詢效率和安全性
看一看這段代碼,讓我們來看看主要存在的問題 以下為引用的內(nèi)容: //設(shè)置SQL語句 insertstr="insert into userinf

來源:模板無憂//所屬分類:.Net教程/更新時(shí)間:2008-08-22
相關(guān).Net教程