【问题标题】:How best to embed multiple Flash Player instances using swfobject via a usercontrol?如何最好地通过用户控件使用 swfobject 嵌入多个 Flash Player 实例?
【发布时间】:2010-12-21 06:57:25
【问题描述】:

我在 MasterPage 内的页面上有一个 ListView 和一些非常丑陋的自动生成 ID。

如...“ctl00_workbenchPlaceHolder_ListView1_ctrl1_LibItem2One”

使用 swfobject.embedSWF(...) 需要我交出页面上 div 的 id,该 id 可以根据浏览器上下文替换为对象/嵌入标记。

我的目标是向用户展示他们已上传到其网站的视频集合,以便他们可以查看它们并在需要时更改一些相关数据。

因此 ListView 是通过 SQLDataSource 填充的,该 SQLDataSource 当前提供了许多指向 .flv 文件的 URL。

但是如果我在我的用户控件中放置一个

' 它将不起作用,因为我可能有多个 id="replaceme" 而可怜的 swfobject 不会喜欢。

所以我的邪恶解决方案是在我的用户控件中放置一个 并将脚本、函数名称和 div 标签 ID 构建为字符串。

如果从数据库中检索的库对象是视频并切换到 MultiView 控件的相关视图,则调用 ApplyVideoConfiguration。

    protected void ApplyVideoConfiguration()
{
    MultiViewLibItem.ActiveViewIndex = 3;
    string functionName = "MakeFlashFor_" + this.ClientID;
    string divId = "fp" + this.ClientID;
    VideoScriptLiteral.Text =
        "<script type=\"text/javascript\">" +
        "Sys.Application.add_load(" + functionName + ");" + 
        "function " + functionName + "(){" +
        "swfobject.embedSWF('PanamaVideoThumbnail.swf', '" + divId + "', '140', '127', '10');" +
        "};" +

        "</script>" + 
        "<div id=\"" + divId + "\" ></div>" ;
}

我想知道,这是一个多么糟糕的解决方案,当谈到最佳实践时,我真的完全没有经验,但我的直觉告诉我这很糟糕,尽管它确实成功地嵌入了一些 Flash Player 实例.

谁能帮我把它变美?

【问题讨论】:

    标签: asp.net flash user-controls swfobject


    【解决方案1】:

    嗯,我找到了一个改进的(也不太尴尬)的解决方案。

    对于初学者,我彻底阅读了 swfobject2_2 文档。

    决定我真的应该在其中投入更多的精力并实际编写一些标记!

    所以我尝试使用一个 标签,我可以从代码隐藏中管理它,但发现 ASP.Net 无论如何都不会让你这样做......

    我终于可以使用内联代码在每个数据绑定的 ListViewItem 基础上修改我的标记。

    我的结果:

                <asp:View runat="server" ID="VideoView">
                    <% string flashvars = "videourl=../../" + ItemRelativeUri;%>
                    <object id="flashplayer" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="110" height="90" name="obout">
                        <param name="movie" value="flash/libview.swf" />
                        <param name="flashvars" value="<% = flashvars %>" />
                        <asp:Literal runat="server" ID="LiteralParamFlashVars" />
                        <!--[if !IE]>-->
                        <object type="application/x-shockwave-flash" 
                        data="flash/libview.swf?<% =flashvars %>"
                         width="110"
                            height="90" name="obin">
                            <!--<![endif]-->
                            <p>
                                You need Flash Player v 10 or better to view this video.</p>
                            <!--[if !IE]>-->
                        </object>
                        <!--<![endif]-->
                    </object>
                </asp:View>
    

    【讨论】:

    • Welldone,您可以将自己的答案标记为您问题的答案以结束循环
    猜你喜欢
    • 2011-06-26
    • 1970-01-01
    • 1970-01-01
    • 2013-02-12
    • 2011-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多