【问题标题】:Can I use Response.Redirect without encoding?我可以在不编码的情况下使用 Response.Redirect 吗?
【发布时间】:2020-04-22 02:27:49
【问题描述】:

我想通过c#中的resonse.redirect函数实现可以通过浏览器打开URL或网络驱动器(N:\ESSBP1-Office\Imagenes\Check list.xlsx)描述的文件。
但是:这仅适用于路径不包含空格的情况。

如何避免编码?如果我在 InternetExplorer 中键入相同的路径,则地址(带空格)会正确解析并打开文件。

【问题讨论】:

  • 考虑使用 Server.UrlEncode()? -> docs.microsoft.com/en-us/dotnet/api/…
  • 你总是可以给浏览器的路径,然后一些 javascript 来做重定向
  • file://(可能是 file:///)而不是 N:\,整个正斜杠和 %20 代替任何空格

标签: c# response.redirect


【解决方案1】:

我没有设法避免使用response.redirect 函数进行编码。 Server.UrlEncode() 也没有这样做,因为它只是添加了另一种不需要的编码,而我希望 TextBox/Label 的确切内容是传递给浏览器 URL 栏的字符串,然后按回车键 - 这应该通过代码完成。

我终于按照@Richard Housham 的建议使用 Javascript 实现了这一点:

标记:

<asp:TextBox id="TB_ExternalLink" runat="server"/>
<asp:LINKButton ID="LB_Open" runat="server" OnClick="OpenLink">Open Link</asp:LINKButton>
<input type="hidden" runat="server" id="hiddenExternalFile"/>

代码:

protected void OpenLink(object sender, EventArgs e)
{
    string url = TB_ExternalLink.Text.Replace(@"\\", @"\\");
    hiddenExternalFile.Value = url;
    Page.ClientScript.RegisterStartupScript(this.GetType(), "CallMyFunction", "windowOpen()", true);
}

Javascript:

function windowOpen() { 
        Window = window.open(document.getElementById('hiddenExternalFile').value, "_blank"); 
}

在新选项卡中打开以这些格式输入到文本框中的任何链接:

http://www.url.com
\\corp.root.int\INT-Host$\USR03\XXX\W10\Desktop\Kaizen MRO\RMA_Part.png
N:\ESSBP1-Office\Imagenes\Check list.xlsx

不考虑空格或特殊 ASCI 字符

【讨论】:

    猜你喜欢
    • 2021-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-04
    相关资源
    最近更新 更多