摘要: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之間的流程架構給讀者,但是我發現
畫圖真的是個費時又費工的事情,只好偷懶一下,如果真的有時間,再補
圖上來好了。