0

我正在使用一小段 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”

4

2 回答 2

2

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

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

并确保该路径可从您的浏览器获得,而不仅仅是从服务器获得。

于 2013-06-14T21:21:17.607 回答
2

试试这个:

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

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

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

于 2013-06-14T21:48:12.840 回答