2012-01-04 44 views
1

我有與在一個特定的方法被暴露用於在JavaScript表達式播放一個Silverlight控制:在asp.net嵌入Silverlight控件和傳遞參數動態

[ScriptableMember] 
     public void PlayMedia(string mediaFileUri) 
     { 
      PlaylistItem playListItem = new PlaylistItem(); 
      playListItem.MediaSource = new Uri(mediaFileUri); 
      myPlayer.Playlist.Items.Add(playListItem); 
      myPlayer.Playlist.AutoPlay = true; 
     } 

。 然後我想在我的asp.net應用程序中嵌入這個silverlight控件。我做這種方式:

<div id="silverlightControlHost"> 
    <object id="silverlightPlayer" data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%"> 
     <param name="source" value="ClientBin/SilverlightPlayer.xap"/> 
     <param name="onError" value="onSilverlightError" /> 
     <param name="background" value="white" /> 
     <param name="minRuntimeVersion" value="4.0.50826.0" /> 
     <param name="autoUpgrade" value="true" /> 
     <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.50826.0" style="text-decoration:none"> 
      <img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight" style="border-style:none"/> 
     </a> 
    </object><iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;width:0px;border:0px"></iframe></div> 

另外,我有一個JavaScript方法,對動態加載的媒體文件:當我執行這個js以這樣的方式方法

<script type="text/javascript"> 
    function PlayMedia(mediaFileUri) { 
     var silverlightPlayer = document.getElementById("silverlightPlayer"); 
     if (silverlightPlayer == null) { 
      alert("Silverlight player not loaded"); 
     } 
     else { 
      alert("Silverlight player loaded"); 
      silverlightPlayer.content.SilverlightPlayer.PlayMedia(mediaFileUri); 
     } 
    } 
</script> 

然後:

<body onload="PlayMedia('http://mediadl.microsoft.com/mediadl/IISNET/media/BigBuckBunny_1080p24.wmv');"> 

它一切正常。

但是我想將參數傳遞給Silverlight控件託管的Default.aspx頁面,然後計算url並將其傳遞給silverlight控件。鏈接可能如下:http://localhost/Default.aspx?id=21487982

我所做的是:我在Page_Load方法創建了一個合適的代碼來執行js腳本,但是我得到的消息:「Silverlight播放器加載」但後來我得到一個錯誤:「無效的指針」看齊:

silverlightPlayer.content.SilverlightPlayer.PlayMedia(mediaFileUri); 

我Page_Load方法如下所示:

protected void Page_Load(object sender, EventArgs e) 
     { 
      var id = Page.Request.QueryString["id"]; 
      string url = ComputeUrl(id); 
      string script = "<SCRIPT LANGUAGE='JavaScript'> "; 
      script += "PlayMedia('"+url+"')"; 
      script += "</SCRIPT>"; 
      this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(),"ClientScript", script); 

     } 

是否有人可以告訴我,我應該在這種情況下怎麼辦?

回答