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>" ;
}
これがどれほど悪い解決策なのか疑問に思っていました.ベストプラクティスに関しては、私は本当に完全に経験がありませんが、私の本能はこれが悪いと言っています.
誰か私がそれを美しくするのを手伝ってくれませんか?