有时在asp.net中,Control.ClientID返回整个Control对象而不是ClientID字符串。到目前为止,我还没有过多地关注它,因为我可以通过ClientID.Id把它当作客户端。但是现在我需要传递一个iframe的ID,IE不会让我传递iframe对象,所以这次我必须得到ID的字符串。
iframe:
<iframe ID="VideoFrame" runat="server" class="embed-responsive-item" frameborder="0" allowfullscreen src="https://www.youtube.com/embed/" ></iframe>
<asp:Literal runat="server" ID="YouTubeScript" />
Codebehind:
YouTubeScript.Text = @"
<script type='text/javascript'>
$(function() {
" + Helpers.CallJavascriptFunction("InitYoutubeVideo", VideoFrame.ClientID) + @"
});
</script>
";
更新/应答
我需要将VideoFrame.ClientID
括在引号中,以便javascript / jquery将其识别为字符串。否则它会看到id并将其转换为属于该id的html对象。
答案 0 :(得分:1)
看起来你正试图以某种方式混合使用javascript和内联aspnet代码。它应该是这样的:
<script type="text/javascript">
Helpers.CallJavascriptFunction("InitYoutubeVideo", "<%= VideoFrame.ClientID %>");
</script>
答案 1 :(得分:0)
您有两种选择。正确使用客户端ID:
<script type='text/javascript'>
$(document).ready(function() {
InitYoutubeVideo('<%=VideoFrame.ClientID%>');
});
</script>
或者将客户端ID设为静态:
<iframe ID="VideoFrame" runat="server" ClientIdMode="static" class="embed-responsive-item" frameborder="0" allowfullscreen src="https://www.youtube.com/embed/" ></iframe>
<script type='text/javascript'>
$(document).ready(function() {
InitYoutubeVideo('VideoFrame');
});
</script>