核心技術(shù)Silverlight4RIAServices_第1頁
核心技術(shù)Silverlight4RIAServices_第2頁
核心技術(shù)Silverlight4RIAServices_第3頁
核心技術(shù)Silverlight4RIAServices_第4頁
核心技術(shù)Silverlight4RIAServices_第5頁
已閱讀5頁,還剩6頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、MSDN 2010-03-23 Silverlight 4 + RIA Services - Ready for Business: Search Engine Optimization (SEO) (Part III)第3步:為重要內(nèi)容提供一個低級版本真是太棒了,我們已經(jīng)弄了一個“深層鏈接”,我們的方法足以讓搜索引擎發(fā)現(xiàn)所有鏈接,當(dāng)搜索引擎來到這個頁面的時候,它能搜索到什么?嗯,大部分搜索引擎只解析HTML,因此,如果通過執(zhí)行選擇“PageView Source”,我們將明白搜索引擎所看到的:如果通過菜單命令“ToolsManage Addons”禁用了插件,我們再去瀏覽,看到的就是:我們就

2、看到了這么老大一張空白頁面!當(dāng)然沒有呈現(xiàn)動態(tài)內(nèi)容。代碼實際上已經(jīng)被作為要加載的動態(tài)內(nèi)容而運行了。我確信搜索引擎不會很快在它們的數(shù)據(jù)中心運行這段silverlight (或 flash 或 ajax)代碼。所以,我們需要一些替代內(nèi)容。幸運的是,這是很容易做到的。首先,使用任何可以替代的內(nèi)容,以便顯示出來。重要的是注意該內(nèi)容并非只為“搜索引擎”。專為搜索引擎編寫的內(nèi)容有時被稱作搜索引擎欺騙或者網(wǎng)絡(luò)垃圾,這些內(nèi)容隱瞞網(wǎng)站的真實性,誤導(dǎo)了搜索引擎的用戶。(有害無信的網(wǎng)絡(luò)垃圾)相反,對于那些沒有安裝Silverlight的人來說,該內(nèi)容是一個備用呈現(xiàn)頁面。它可能沒有所有功能,但它卻是最簡單的解決方案。因

3、此,搜索引擎爬蟲沒有安裝 Silverlight,以便到了一些有意義而且準(zhǔn)確的檢索。把下面的HTML代碼添加到你的“default.aspx”頁面中去。<div id="AlternativeContent" style="display: none;"> <h2>Hi, this is my alternative content</h2> </div>注意其中的:display: none,這意味著我們不希望瀏覽器去顯示它除非沒有安裝Silverlight。為了實現(xiàn)這個目標(biāo),添加這段代碼到頁面:<

4、script type="text/javascript"> if (!isSilverlightInstalled() var obj = document.getElementById('AlternativeContent'); obj.style.display = "" </script>請注意,真正酷的“isSilverlightInsalled”方法,是來自Petr的帖子:old-but-good.我只是向我 Silverlight.js 文件添加此功能。function isSilverlightInst

5、alled() var isSilverlightInstalled = false; try /check on IE try var slControl = new ActiveXObject('AgControl.AgControl'); isSilverlightInstalled = true; catch (e) /either not installed or not IE. Check Firefox if (navigator.plugins"Silverlight Plug-In") isSilverlightInstalled = tr

6、ue; catch (e) /we don't want to leak exceptions. However, you may /to add exception tracking code here return isSilverlightInstalled;當(dāng)我們從一個沒有安裝Silverlight的瀏覽器運行它的時候,就看到了“替代內(nèi)容”:但是如果安裝了Silverlight,就能夠看到我們漂亮的Silverlight應(yīng)用的內(nèi)容。真棒,但我們?nèi)绾物@示合適的內(nèi)容?我們希望精確顯示Silverlight應(yīng)用中的數(shù)據(jù),并且我們要盡可能少寫代碼。我們真的不希望維護太多的頁面。因此,讓

7、我們在網(wǎng)頁中的AlternativeContent這個Div元素中,添加一些非?;镜拇a。這個ListView是用來顯示飯店詳細信息的。<asp:ListView ID="RestaurnatDetails" runat="server" EnableViewState="false"> <LayoutTemplate> <asp:PlaceHolder ID="ItemPlaceHolder" runat="server"/> </LayoutTem

8、plate> <ItemTemplate> <asp:DynamicEntity ID="RestaurnatEntity" runat="server"/> </ItemTemplate></asp:ListView> 現(xiàn)在我們需要將其綁定到我們的數(shù)據(jù)源 使用VS的設(shè)計視圖,我覺得這很容易做到。請注意,你要弄一個可視化的div,這樣你就能在designer中使用它。然后我們配置數(shù)據(jù)源選擇要使用的查詢方法是很容易的下一步,我們需要基于我們之前定義的routes來綁定查詢參數(shù)。為完成ListView,現(xiàn)

9、在我們要認真地重復(fù)同樣的步驟 下面給我們提供了一些非常簡單的 aspx 代碼:1: <asp:ListView ID="RestaurnatDetails" runat="server" 2: EnableViewState="false" DataSourceID="restaurantsDomainDataSource"> 3: <LayoutTemplate> 4: <asp:PlaceHolder ID="ItemPlaceHolder" runat=&qu

10、ot;server"/> 5: </LayoutTemplate> 6: <ItemTemplate> 7: <asp:DynamicEntity ID="RestaurnatEntity" runat="server"/> 8: </ItemTemplate> 9: </asp:ListView> 10: 11: <asp:DomainDataSource ID="restaurantsDomainDataSource" runat="ser

11、ver" 12: DomainServiceTypeName="MyApp.Web.DishViewDomainService" 13: QueryName="GetRestaurant"> 14: <QueryParameters> 15: <asp:RouteParameter name="id" RouteKey="restaurantId" 16: DefaultValue ="-1" Type = "Int32"/> 17:

12、</QueryParameters> 18: </asp:DomainDataSource> 19:下一步,我本要讓這些控件制造基于數(shù)據(jù)的UI。1: protected void Page_Init(object sender, EventArgs e) 2: 3: RestaurnatDetails.EnableDynamicData(typeof(MyApp.Web.Restaurant); 4: PlateDetails.EnableDynamicData(typeof(MyApp.Web.Plate); 5: string resId = Page.RouteD

13、ata.Values"restaurant" as string; 6: if (resId != null) Response.Write("<script type=text/javascript>window.location.hash='#/Plates'</script"+">"); 7: 8:注意,我們添加了第4到5行,以便啟用基于這兩個ListViews的動態(tài)數(shù)據(jù)。最后一步,我們需要添加DynamicData 使用的模板的集合。你可以從任何Dynamic Data工程中獲得這些。只

14、需將其復(fù)制到 web 工程的根目錄即可。你可以編輯這些模版,以便精確顯示你的數(shù)據(jù)。在EntityTemplates目錄中,我們需要為每個實體創(chuàng)建一個模板(在這個例子中,有Plate和餐館這兩個實體)。這將控制他們的顯示方式。1: <% Control Language="C#" CodeBehind="Restaurant.ascx.cs" Inherits="MyApp.Web.RestaurantEntityTemplate" %> 2: 3: <asp:DynamicControl ID="Dynam

15、icControl8" runat="server" DataField="ImagePath" /> 4: <ul class="restaurant"> 5: <li> 6: <ul class="restaurantDetails"> 7: <li><h2><asp:DynamicControl ID="NameControl" runat="server" DataField="

16、;Name" /> </h2> </li> 8: <li><asp:DynamicControl ID="DynamicControl1" runat="server" DataField="ContactName" /> (<asp:DynamicControl ID="DynamicControl2" runat="server" DataField="ContactTitle" />)</

17、li> 9: <li><asp:DynamicControl ID="DynamicControl3" runat="server" DataField="Address" /> </li> 10: <li><asp:DynamicControl ID="DynamicControl4" runat="server" DataField="City" />, <asp:DynamicControl ID=

18、"DynamicControl5" runat="server" DataField="Region" /> <asp:DynamicControl ID="DynamicControl6" runat="server" DataField="PostalCode" /> </li> 11: <li><asp:DynamicControl ID="DynamicControl7" runat="server" DataField="Phone" /> </li> 12: <li><asp:HyperLink runat="server" ID="link" NavigateUrl="<%#GetDetailsUrl() %>" Text="details."></asp:HyperLink></li> 13: </ul> 14: </li

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論