我在我的web應用程序中有一個特定的頁面(sitecore內容項),它由一個sitecore佈局和許多sublayouts組成。其中一個子佈局是一個用戶控件,我希望在點擊某個按鈕後進行刷新。我只希望刷新子頁面佈局,並保持頁面的其他部分保持不變(這裏典型的阿賈克斯情況)。當我的所有sitecore內容項目與我的web應用程序中的整個頁面(帶有sublayouts的佈局)直接相關時,如何使用sitecore完成此操作?在我的情況下,我想使用ajax只返回一個特定的單一sublayout的內容。 sitecore的這種Ajax情況的最佳做法是什麼?我正在使用sitecore 6.5。如何使用Sitecore與ajax進行部分頁面更新?
回答
有許多選項可用於實現異步行爲。這些與Sitecore沒有直接關係,但是,有一些Sitecore特定的事情要注意,我有突出顯示下面。
UpdatePanel控件
如果要執行一些小事,其中超高速性能是不是一個問題,只是在包裝你的按鈕(和你會喜歡 更新任何其他.NET控件) UpdatePanel Control。您還需要將 aScriptManager
控件放入您的基本佈局中,靠近頂部<form>
元素。 注:使用此方法時,你需要確保你的Sublayout沒有緩存功能,否則你的按鈕將無法正常回傳創建您自己的Web服務
在這種情況下,有許多客戶端框架可用於實現相同的結果。我首選的方法是用jQuery鉤住客戶端按鈕點擊事件,準備一個請求對象,並將其發佈到服務器(獲取更新客戶端所需的信息)。以下是一些與Sitecore配合使用的Web服務選項 - 允許您訪問
Sitecore.Context
和所有後續的Sitecore API。創建一個空的ASPX Web窗體,該窗體接受參數作爲查詢字符串。在
Page_Load
方法中,使用參數進行一些處理並使用Response.Write()
直接寫入響應。一個JavaScriptSerializer
派上用場序列化到JSON,只是一定要設置Response.ContentType = "text/javascript";
創建ASMX Web Service與
[WebMethod]
裝飾你的方法(或[WebMethod(EnableSession = true)]
如果您需要訪問會話數據)。使用MVC控制器(例如:ASP.NET Web Api)來創建一個API。我相信有一些問題需要在Sitecore 6.5中解決,如here所述。
由於這全部包含在一個Sublayout中,因此您可以簡單地使用圍繞您的按鈕和usercontrol的標準<asp:UpdatePanel>
。在代碼隱藏中,你可以做任何必要的數據綁定/數據檢索來更新usercontrol的內容。
請注意,如果該按鈕位於與內容需要更新的位置不同的子圖層上,只要兩個控件的內容都在<asp:UpdatePanel>
之內,就可以使用this question中描述的方法。
在回答您的其他問題:
,這是什麼樣的與Sitecore的AJAX情況的最佳做法是什麼?
對於這類事情,並沒有真正的Sitecore特定的最佳實踐。在這種情況下,任何適用於純ASP.NET的方法都可以與Sitecore一起使用。我上面描述的方法可能是最簡單和最快速的實現,但您也可以通過jQuery和ajax來調用Web服務來加載更新的內容。
由於您使用短語「部分頁面更新」,我假設您正在使用UpdatePanel。這與傳統的ASP.NET應用程序沒有什麼不同。您將在服務器端處理程序方法中處理按鈕單擊,修改控件的屬性並讓更新面板處理其餘部分。
如果你沒有使用更新面板,你有幾個選擇取決於你想要達到的目標。
通常情況下,如果你點擊一個按鈕來觸發一個ajax請求,你會發布一些數據回服務器。對於這種情況,您通常會設置一個Web服務來處理數據並返回一些結果。您的服務可以訪問Sitecore數據,但不會使用Sitecore展示引擎。
另一種選擇是向Sitecore頁面發送請求(可能與原始請求相同),但包含查詢字符串參數以觸發不同的設備。您可以將此設備配置爲呈現JSON,XML或HTML片段,而不是普通佈局和子佈局電池。
另一種選擇是使用Sitecore項目Web API。如果你走這條路線,你會有另外一些選擇(以及一些學習曲線)。首先閱讀SDN上的文檔或關於該主題的許多博客文章。
我本來會用獨立的設備選項,並通過jQuery來查詢帶有查詢字符串觸發器的頁面。很好的回答 –
- 1. 如何在頁面部分進行實時更新?
- 2. 如何使用jquery進行局部頁面更新
- 3. 使用Ajax而不使用jQuery更新頁面部分
- 4. asp.net mvc部分頁面更新與asp.net aspx部分頁面更新
- 5. 如何進行定期刷新頁面的一部分的AJAX調用?
- 6. 如何使用AJAX或JSF刷新頁面的一部分?
- 7. 部分頁面更新與AngularJS
- 8. asp mvc部分頁面視圖更新與AJAX不工作
- 9. 在JSF中,如何使用ajax動態地和部分地更新頁面以及進行表單驗證?
- 10. 部分頁面更新使用更新面板
- 11. 使用Jquery和Ajax進行部分頁面刷新以獲得XIV秒數?
- 12. 部分頁面更新
- 13. 部分頁面更新
- 14. kaminari ajax分頁沒有更新頁面
- 15. 如何更新頁面的其他部分(使用PJAX)?
- 16. 我們如何在asp.net中進行局部頁面更新
- 17. 如何Codeignitor分頁更新頁面的特定部分
- 18. Ajax:從「lightbox」窗口部分刷新父頁面(更新div)
- 19. Rails 3 ajax更新部分不工作沒有頁面刷新
- 20. ajax刷新部分頁面錯誤
- 21. 用angularjs點擊更新頁面部分
- 22. 如何使用AngularFire對對象進行部分更新
- 23. 如何使用Spring數據的MongoDB(MongoOperations)進行部分更新
- 24. 導軌 - AJAX頁面局部更新
- 25. 在對ActionResult進行jQuery ajax調用時頁面更新
- 26. jquery分頁+ jquery ajax =? asp.net更新面板
- 27. 使用jquery/ajax時頁面不更新
- 28. 使用AJAX和mysql更新html頁面
- 29. 更新HTML頁面使用AJAX
- 30. 更新頁面數據使用ajax
是需要更新的Sublayout按鈕? –
@mdresser這是一個很好的問題,肯定有助於澄清我的問題。是的,它在相同的子佈局上。 sublayout上有按鈕元素以及一個額外的用戶控件。我只需要更新子佈局內的用戶控件。 – user1431072