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中的#值???请指导我完成这个。
亲切的问候, 哈迪克
答案 0 :(得分:0)
ViewFile js函数在哪里获取输入filePath?问题可能与此有关。如果filePath中包含#,那么您可以使用encodeURIComponent
,例如
'ViewFile.aspx?fileName=' + encodeURIComponent(filePath)
但是,如果函数的filePath
值不正确,则会出现问题,因为其他地方的编码问题(例如IFrame源)。每当您在URL / QueryString中使用#时,它可能会导致问题 - 所以您还应该在将其分配给IFrame源时尝试将其转义。