我有这个用于在aspx页面中嵌入视频的HTML代码:
<OBJECT ID="MediaPlayer" WIDTH="192" HEIGHT="190" CLASSID="CLSID:22D6F312-B0F6-11D0-94AB-0080C74C7E95"
STANDBY="Loading Windows Media Player components..." TYPE="application/x-oleobject">
<PARAM NAME="FileName" VALUE="videofilename.wmv">
<PARAM name="autostart" VALUE="false">
<PARAM name="ShowControls" VALUE="true">
<param name="ShowStatusBar" value="false">
<PARAM name="ShowDisplay" VALUE="false">
<EMBED TYPE="application/x-mplayer2" SRC="videofilename.wmv" NAME="MediaPlayer"
WIDTH="192" HEIGHT="190" ShowControls="1" ShowStatusBar="0" ShowDisplay="0" autostart="0"> </EMBED>
</OBJECT>
问题是,我想从我的C#代码隐藏(f.e.,要播放的文件的路径)设置其参数。
我知道我应该添加runat="server"
,但这不是唯一的事情。无论如何,代码隐藏都无法识别MediaPlayer类型的任何元素。 (我正试图从我的Page_Load(..)
)
我该怎么做?
10倍
答案 0 :(得分:2)
OBJECT标记没有ASP.NET控件,因此您必须自己生成HTML。有两种简单的方法可以做到这一点。第一种方法是使用&lt; %%&gt;您的ASPX文件中的标记,如下所示:
<OBJECT ID="MediaPlayer" WIDTH="192" HEIGHT="190" CLASSID="CLSID:22D6F312-B0F6-11D0-94AB-0080C74C7E95"
STANDBY="Loading Windows Media Player components..." TYPE="application/x-oleobject">
<PARAM NAME="FileName" VALUE="<% =FileName %>">
...
</OBJECT>
另一种方法是在代码隐藏中创建一个LiteralControl,并将其HTML设置为您想要的任何内容:
LiteralControl myObject = new LiteralControl();
myObject.Text =
@"<OBJECT ID='MediaPlayer' WIDTH='192' HEIGHT='190' CLASSID='CLSID:22D6F312-B0F6-11D0-94AB-0080C74C7E95' STANDBY='Loading Windows Media Player components...' TYPE='application/x-oleobject'>
<PARAM NAME='FileName' VALUE='" + FileName + "'>
...
</OBJECT>';";
Page.Controls.Add(myObject);
答案 1 :(得分:2)
创建HtmlGenericControl
。您可以通过代码隐藏通过Attributes
属性设置属性。并通过Controls
添加子元素。
HtmlGenericControl obj = new HtmlGenericControl("object");
HtmlGenericControl embedTag = new HtmlGenericControl("embed");
embedTag.Attributes["type"] = "application/x-mplayer2";
obj.Controls.Add(embedTag);
flashPlaceHolder.Controls.Add(obj);