Asp.Net Control.ClientID返回对象而不是字符串

时间:2018-03-20 11:13:28

标签: c# asp.net .net

有时在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对象。

2 个答案:

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