【问题标题】:Embedding Silverlight control in asp.net and pass the parameter dynamically在asp.net中嵌入Silverlight控件并动态传递参数
【发布时间】:2012-01-05 00:30:58
【问题描述】:

我有一个带有表达式播放器的 silverlight 控件,其中公开了特定方法以在 javascript 中使用:

[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 方法来动态加载媒体文件:

<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>

那么当我以这种方式执行这个js方法时:

<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);

        }

谁能告诉我在这种情况下我该怎么办?

【问题讨论】:

    标签: asp.net silverlight


    【解决方案1】:

    您在寻找 InitParams 将参数直接传递给silverlight。这可能会对您有所帮助。 http://msdn.microsoft.com/en-us/library/cc838255%28v=vs.95%29.aspx

    http://msdn.microsoft.com/en-us/library/cc189004%28v=vs.95%29.aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-06
      • 1970-01-01
      • 1970-01-01
      • 2011-02-12
      • 2011-09-02
      相关资源
      最近更新 更多