ASP.NET iFrame src需要前面的正斜杠,硬编码路径不需要

时间:2018-12-04 05:39:32

标签: asp.net asp.net-mvc

当我的剃须刀文件中有一个<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 inspection

在变量值之前使用正斜杠,这是生成的html,可以罚款

iFrame inspection2

这是正常的/预期的吗?

1 个答案:

答案 0 :(得分:0)

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

@{
    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>