Silverlight 呼叫 Javascript function + AJAX 取得Service端資料

摘要:Silverlight 呼叫 Javascript function

 

Namespace: System.Windows.Browser (所以要import Sytem.Windows.Browser)

 

Silverlight:


HtmlPage.Window.Invoke("direct", "Love")

 

 

Aspx:


function direct(a) {

            alert(a);

        }

 

這樣畫面就會跳出內容為 Love的alert視窗了,是不是很簡單呢

 

msdn這邊說得很清楚,第一個參數是方法名稱,第二個參數是傳遞給方法的參數

 

(Parameters to be passed to the method)

http://msdn.microsoft.com/en-us/library/system.windows.browser.scriptobject.invoke(v=vs.95).aspx

 

大家有沒有想過一個延伸使用方法,既然silverlgith是client端,既不能用session 、request .........一堆等

 

server方法,是不是造成了我們的困擾,既然如此幹嘛不改一下JS不就可以輕鬆撈到server端的資料了,

 

比方我將JS改成

 


function getaccount() {

 
         
            return '<% = Request.ServerVariables("LOGON_USER") %>;
 

       }

 

在Silverlight就        g_AD_Account = HtmlPage.Window.Invoke("getaccount", "")


不就輕鬆取得了AD的名稱了,甚麼 ! 有人有程式潔癖不喜歡在js這樣做,那我們再延伸,

 

,前幾篇不就有AJAX的教學,加上AJAX取資料去取回在return回給silverlight不就

 

照樣取得到server端的資料嗎 ?(小馬這邊已經測試過了,就不多贅述)

 

最後一定會有人再問,那如果我要取回的資料是一個Datetable 這種資料時怎麼半

 

那只好在另一篇補述了。

 

AJAX請參考 :

http://www.dotblogs.com.tw/justforgood/archive/2012/04/20/71684.aspx

 

 

http://www.dotblogs.com.tw/justforgood/archive/2012/04/20/71672.aspx

 

http://www.dotblogs.com.tw/justforgood/archive/2012/04/19/71644.aspx

 

Ps. 其實一直想畫個 silverlight 和 Aspx之間的流程架構給讀者,但是我發現

 

畫圖真的是個費時又費工的事情,只好偷懶一下,如果真的有時間,再補

 

圖上來好了。