在asp.net中使用Object标签

时间:2009-12-30 14:43:20

标签: asp.net

我有这个用于在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倍

2 个答案:

答案 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);