如何动态设置IFrame的来源?

我有一个嵌入YouTubevideo的IFrame。 我想创建一个文本框,用户(管理员)可以粘贴video的新src(URL),IFrame获取新的源。 这是我到目前为止:

protected void Edited_Click(object sender, EventArgs e) { // HtmlControl frame1 = (HtmlControl)this.FindControl("frame1"); string url = TextBox1.Text; frame1.Attributes["src"] = url; } 

在HTML代码中是iframe:

 

我没有在开头设置任何src,但是当我在文本框中粘贴URL并点击按钮时,Iframe不会显示任何内容。

您需要在客户端浏览器上执行此操作,而不是服务器端。 我会建议像:

 // (Add inside script element in head of page html) window.onload = function() { document.getElementById('').onchange = function() { changeFrameUrl(); } }; function changeFrameUrl() { var inputVal = document.getElementById('').value; document.getElementById('').src = inputVal; } 

希望这会有所帮助 – 虽然它不在我的脑海中,所以如果它不能第一次工作,请不要解雇我!

其他答复没有回答这个问题,他们提供了另一种选择。 问题是如何从C#设置iFrame src。 我会在这里回答。

我都是为“工作的正确工具”而自己使用这个口头禅 – 但只有当其他工具“错误”时才会使用。 这还没有确定。 有人能提供一个很好的技术理由,为什么不应该在代码隐藏中完成这个?

我认为@Pepys遇到的问题可能是由于URL中的某些内容,他还没有提供。 例如,他的URL可能包含符号或其他需要转义的字符。

以下代码适用于我:

 excelframe.Attributes["src"] = @"https://r.office.microsoft.com/r/rlidExcelEmbed?" + @"su=-0000000000" + @"&Fi=zzzzzzzzzzzz!111" + @"&ak=x%3d9%26x%3d9%26x%3d!zzzzzzzzzz" + @"&kip=1" + @"&AllowTyping=True" + @"&ActiveCell='sheet1'!C3" + @"&wdHideGridlines=True" + @"&wdHideHeaders=True" + @"&wdDownloadButton=True";