以编程方式创建的iFrame为空

时间:2013-06-14 21:07:07

标签: c# asp.net iframe

我正在使用一小段C#代码在其中创建一个带有pdf的iFrame

但是,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”

2 个答案:

答案 0 :(得分:2)

尝试创建实际的IFRAME控件,而不是创建文字(和btw,你不能用这些方式创建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);

确保您的浏览器可以使用该路径,而不仅仅是服务器。

答案 1 :(得分:2)

请改为尝试:

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

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

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