首页 > 解决方案 > ASP.NET iFrame src 需要前面的正斜杠,硬编码路径不需要

问题描述

当我的<iFrame/>剃须刀文件中有一个src硬编码而没有前斜杠的文件时,pdf 在以下文件中呈现良好iFrame

    <iframe src="UploadedPdfs/analytics.pdf"
            width="800"
            height="800"
            runat="server"
            id="iframepdf">
    </iframe>

但是,如果我将 设置src为通过模型上的属性动态传递,则只有在路径前加上正斜杠时才有效:

    PdfView pView = (PdfView)ViewData["PdfView"];
    string pRelativePath = pView.relativePath;

    <iframe src=@( "/" + pRelativePath ) //pRelativePath when debugging is equal to UploadedPdfs/analytics.pdf
            width="800"
            height="800"
            runat="server"
            id="iframepdf">
    </iframe>

这是上述变量传递路径的 html 的样子,没有斜线,这不会呈现pdf:

iFrame 检查

在变量值之前使用正斜杠,这是生成的 html,它呈现得很好

iFrame 检查2

这是正常/预期的吗?

标签: asp.netasp.net-mvc

解决方案


您的最后一段代码中有一些奇怪的引号。它应该是这样的:

@{
    PdfView pView = (PdfView) ViewData["PdfView"];
    string pRelativePath = pView.relativePath;
}

<iframe src="@pRelativePath"
                width="800"
                height="800"
                runat="server"
                id="iframepdf">
</iframe>

这在开始时没有正斜杠就可以工作,并且像您的第一段代码一样呈现:

<iframe src="UploadedPdfs/analytics.pdf"
                width="800"
                height="800"
                runat="server"
                id="iframepdf">
</iframe>

推荐阅读