2013-02-14 65 views
0

我開始構建將駐留在某些SharePoint 2007 PageLayouts上的UserControl。 UserControl的目的是根據頁面的名稱顯示多個位置的地圖。因此,需要做的是獲取頁面名稱,查詢SharePoint列表以獲取地理座標的相關集合,然後將其加載到地圖上。除了元素和學術jQuery AJAX調用的簡單修改之外,我從未真正完成過很多客戶端腳本。所以我試圖理解傳遞數據的常見做法。將用戶控件中的服務器端數據獲取到客戶端腳本的最佳方法

我在網上看到很多關於AJAX調用頁面方法的東西,因爲這是一個用戶控件。替代方案看起來是ajax調用Web服務。我之前已經構建了Web服務,但供.NET客戶端使用。 this仍然是您設置一個.net Web服務以便通過腳本調用的方式嗎?安全性如何?如果我只希望我的網頁或我的網站撥打網絡服務而不是普通大衆,該怎麼辦?

在這種情況下,我不確定服務甚至是必要的。我可以在初始請求期間檢索數據並將其放在頁面上嗎?像json的東西序列化後面的代碼中的座標集合,並將其寫入隱藏字段的JavaScript來拾取?

回答

0

將用戶控件的值傳遞給javascript有幾種方法。

ScriptControl的:

允許您包括您的網絡控制客戶端的行爲。見下面的鏈接:
Creating Script Controls
ASP.NET: Create AJAX Server Controls using the ScriptControl base class
Asp.Net Ajax ScriptControl Tutorial

的RegisterStartupScript和的RegisterClientScriptBlock:

允許包括在頁面上的客戶端腳本塊。見下面的鏈接:
Working with Client-Side Script Injecting Client-Side Script from an ASP.NET Server Control

HtmlGenericControl:

沒有什麼阻止你dinamically創建腳本標籤並插入你的所有的JavaScript邏輯到InnerHtml財產。它可以在最初的請求期間完成。

例:4年後

HtmlGenericControl script = new HtmlGenericControl("script"); 
script.ID = "script"; 
script.Attributes.Add("type", "text/javascript"); 
script.InnerHtml = "alert('Hey');"; 

//Insert the script into some asp:Panel 
panel.Controls.Add(script); 
+0

我從來沒有見過這個答案,但感謝您抽出時間。這些似乎是包含JavaScript的工具,也是一個強大的工具,但我有興趣使數據可以訪問_to_我的JavaScript。 – xr280xr 2017-01-31 18:44:11

0

讀這篇文章,我可以告訴我的過去的自己這樣的:

  1. 是的,就包括頁面上的JSON,隱藏JS回暖。但請注意,這會增加必須由客戶端瀏覽器下載的響應的大小。這不僅需要更多時間,而且會佔用更多的移動用戶的昂貴數據。如果有大量數據,有些數據可能無法使用,則根據需要從Web服務中檢索數據可能是更好的選擇。

  2. REST服務是響應AJAX請求的常用解決方案。如果您想允許來自匿名用戶的客戶端腳本進行訪問,那麼您無法通過匿名用戶保護數據。

相關問題