1

MasterPage 内の Page に ListView があり、いくつかの非常に醜い自動生成 ID があります。

など...「ctl00_workbenchPlaceHolder_ListView1_ctrl1_LibItem2One」

swfobject.embedSWF(...) を使用するには、ブラウザーのコンテキストに応じて、オブジェクト/埋め込みマークアップに置き換えることができる、ページ上の div の ID を渡す必要があります。

私の目的は、ユーザーが Web サイトにアップロードしたビデオのコレクションを表示して、必要に応じてそれらを確認し、関連するデータを変更できるようにすることです。

したがって、現在 .flv ファイルを指す多数の URL を提供する SQLDataSource を介して設定される ListView です。

しかし、ユーザー コントロールに <div id="replaceme"></div>' を配置すると、複数の id="replaceme" が存在する可能性があり、貧弱な swfobject が気に入らないため、機能しません。

したがって、私の邪悪な解決策は、ユーザー コントロールに <asp:Literal> を配置し、スクリプト、関数名、および div タグ ID を文字列として作成することです。

ApplyVideoConfiguration は、データベースから取得されたライブラリ オブジェクトがビデオであり、MultiView コントロールの関連するビューに切り替わる場合に呼び出されます。

    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>" ;
}

これがどれほど悪い解決策なのか疑問に思っていました.ベストプラクティスに関しては、私は本当に完全に経験がありませんが、私の本能はこれが悪いと言っています.

誰か私がそれを美しくするのを手伝ってくれませんか?

4

1 に答える 1

2

ええと、私は改善された(そしてまた恥ずかしくない)解決策を見つけました。

手始めに、swfobject2_2のドキュメントをよく読みました。

本当にもっとエルボーグリースを入れて、実際にマークアップを書くべきだと決めました!

そこで、コードビハインドから管理できる<object runat = "server">タグを使用してみましたが、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>
于 2009-11-30T01:57:57.773 に答える