哈希特殊字符在IFRAME中不起作用

时间:2011-05-30 07:15:02

标签: c# javascript asp.net .net-3.5

Request.QueryString包含路径 例如。 TEMP \文件#hashName.jpg

protected void Page_Load(object sender, EventArgs e)
{
string filePath = Request.QueryString["fileName"];
iframes.Attributes.Add("src", filePath);
}

它去了Markup,我写了javascript代码

function ViewFile(filePath) {
    var width = 800;
    var height = 450;
    var left = (screen.width / 2) - (width / 2);
    var top = (screen.height / 2) - (height / 2);
    window.open('ViewFile.aspx?fileName=' + filePath, 'CustomPopUp', 'width=' + width + ', height=' + height + ',toolbar=no,menubar=no,directories=no,resizable=yes,scrollbars=yes,location=no,top=' + top + ',left=' + left);
    return false;
}

但是当我跑步时,它会显示我(在新窗口中) "无法找到资源。 " 说明:HTTP 404.您要查找的资源(或其中一个依赖项)可能已被删除,名称已更改或暂时不可用。请查看以下网址,确保拼写正确。

请求的网址:/ Temp / file 一旦遇到HASH,它就会打破这条路...... 我用过Server.URLEncode和HttpUtility.UrlEncode();它转换/和#到相应的值... bt显示消息

HTTP错误400 - 错误请求。

Javascript Escape()EncodeURI()和EncodeURI组件也无法正常工作。 我该怎么做才能逃脱#?? iframe接受URL中的#值???请指导我完成这个。

亲切的问候, 哈迪克

1 个答案:

答案 0 :(得分:0)

ViewFile js函数在哪里获取输入filePath?问题可能与此有关。如果filePath中包含#,那么您可以使用encodeURIComponent,例如

'ViewFile.aspx?fileName=' + encodeURIComponent(filePath)

但是,如果函数的filePath值不正确,则会出现问题,因为其他地方的编码问题(例如IFrame源)。每当您在URL / QueryString中使用#时,它可能会导致问题 - 所以您还应该在将其分配给IFrame源时尝试将其转义。