Asp.NET頁面傳值到Silverlight頁面


前面在做項目的時候遇到這樣一個問題,在aspx頁面中需要嵌入一個Silverlight開發的插件,然后需要從aspx頁面上傳值到Silverlight上進行處理,百度、谷歌了良久,有一網友提供了一個我認為比較完美的解決辦法,現在就就把解決辦法寫出來,如果大家有更好的辦法,記得分享哦。

首先新建一個Silverlight項目,然后引用一個DLL(System.Web.Silverlight.dll 這個DLL是網上一位仁兄提供的,相當不錯),然后刪除本來的aspx頁面,添加一個新的頁面,然后在 頁面上添加一條語句:

<%@ Register Assembly="System.Web.Silverlight" Namespace="System.Web.UI.SilverlightControls"
TagPrefix="asp" %>

然后在下面寫入如下語句:

<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
<div id="divMap" style="width:100%;height:100%;">
<asp:Silverlight ID="Xaml1" runat="server" Source="~/ClientBin/Standard.xap" Width="100%" Height="100%" />
</div>

下面對這個<asp:Silverlight ID="Xaml1" runat="server" Source="~/ClientBin/Standard.xap" Width="100%" Height="100%" />標簽進行簡要的說明:這個是那個引用的DLL中封裝好的,可以替代我們以前的那個aspx頁面的object,這個Source就是Silverlight項目生成的xap包。

下面進行傳值:

在aspx后台頁面的Page_Loade事件中寫入如下語句:

string str = Request.QueryString["Str"].ToString();
this.Xaml1.InitParameters = str;

這個Str的值是引用這個Silverlight項目的頁面傳值過來的。然后再App.xaml.cs中加入一個屬性,用來存儲傳過來的值:

public static string Points { get; set; }

然后在App.xaml.cs的Application_Startup事件中寫入:Points = e.InitParams["Points"].ToString();

然后在MainPage.xaml.cs中通過App.Points就可以取到這個值。

到此,頁面的傳值就完成了。

我項目中的本意是要在一個aspx頁面中引用一個Silverlight頁面,然后往這個Silverlight頁面傳一些坐標的值,然后在Silverlight中通過ArcGIS API For Silverlight來顯示這些坐標,開始的時候考慮過用Web服務來做,但是覺得過程太復雜了,用這個方法可以很方便的實現,不過這個方法有一個不好的地方是:每次傳值的時候都必須刷新這個Silverlight的頁面,會造成資源的浪費,尤其是我這個要用到地圖的項目中,是很耗費時間的。不知道大家有木有更好的辦法。需要那個DLL文件的童鞋可以留下郵箱地址,我會統一發給你們的。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM