我有與在一個特定的方法被暴露用於在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);
}
是否有人可以告訴我,我應該在這種情況下怎麼辦?