我在MasterPage中的页面上有一个ListView,还有一些非常难看的丑陋的自动生成ID。
例如......“ctl00_workbenchPlaceHolder_ListView1_ctrl1_LibItem2One”
使用swfobject.embedSWF(...)要求我在我的页面上移交div的id,该id可以用object / embed标记替换,具体取决于浏览器上下文。
我的目标是向用户展示他们上传到他们网站的视频集,以便他们可以查看这些视频并根据需要更改一些相关数据。
因此,ListView通过SQLDataSource填充,该SQLDataSource当前提供了许多指向.flv文件的URL。
但是如果我把< div id =“replaceme”>< / div>'放进去就行不通在我的用户控件中,因为我可能会有多个id =“replaceme”,而糟糕的swfobject会不喜欢它。
所以我的邪恶解决方案是放一个< asp:Literal>在我的usercontrol中,将脚本,函数名和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实例
任何人都可以帮助我让它美丽吗?
答案 0 :(得分:2)
首先,我仔细阅读了swfobject2_2文档。
决定我应该把更多的肘部油脂加入其中并实际写出一些标记!
所以我尝试使用&lt; object runat =“server”&gt;我可以从代码隐藏中管理但是发现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>