通过编程方式创建的iFrame为空

本文关键字:iFrame 为空 创建 方式 编程 | 更新日期: 2023-09-27 18:18:23

我正在使用一小段c#代码来创建一个iFrame,其中包含pdf。

但是,iFrame显示为空。

 LiteralControl c= new  LiteralControl("<iframe id='embeddedFrame' name='embeddedFrame' runat=server src="+filePath+" width=400 height=400></iframe>");
 ph.Controls.Add(c);

查看页面源代码给了我这个:

<iframe id="embeddedFrame" name="embeddedFrame" runat="server" src="C:'Users'Houseman'Desktop'WebApplication1'WebApplication1'Data'Untitled1.pdf" width="400" height="400"></iframe>

看起来是正确的。我确实在那个位置有。pdf文件。没有404错误,只是空白…

我做错了什么,或者我该如何解决这个问题?


我可以通过浏览器访问文件,除了我必须拿出localhost:8683并用file:///代替它


我正在用

访问文件
string PdfLocation = System.IO.Path.Combine(Server.MapPath("Data") ,pdfn);

其中pdfn为上传文件的文件名+".pdf"

通过编程方式创建的iFrame为空

试试这个:

string PDFLocation = "~/Data/" + pdfn;

您将获得服务器文件的绝对路径,这是无法从浏览器访问的。你需要的是网站的相对路径。

您需要将这个答案与Yuriy关于创建iframe作为服务器控件的答案结合起来。

尝试创建实际的IFRAME控件,而不是创建文字(顺便说一句,您不能以这种方式创建runat="sever控件):

HtmlGenericControl c = new HtmlGenericControl();
c.TagName = "IFRAME";
c.Attributes["src"] = filePath;
c.Attributes["id"] = "embeddedFrame";
c.Attributes["name"] = "embeddedFrame";
c.Attributes["width"] = "400";
c.Attributes["height"] = "400";
ph.Controls.Add(c);

并确保该路径在浏览器中可用,而不仅仅是从服务器。