gpt4 book ai didi

c# - 为什么从查询字符串中删除反斜杠 - ASP.NET 和 Javascript

转载 作者:行者123 更新时间:2023-11-29 10:00:35 25 4
gpt4 key购买 nike

我正在尝试生成一个包含 UNC 路径作为查询字符串变量之一的 URL。当用户单击 ASP.NET 按钮控件时,URL 将在弹出窗口中打开。单击按钮时,反斜杠将从 UNC 路径中删除,从而导致页面中断。

按钮在带有所有反斜杠的页面源文件中正确呈现。

有什么办法可以避免这种情况吗?

这是我的源代码:

代码隐藏:

string unc = @"\\myserver\myfolder\myfile.txt";
string url = string.Format("http://www.mysite.com/page.aspx?a={0}", unc);

MyButton.Attributes.Add("onclick", @"javascript:FullPop('" + url + @"')");

ASPX 页面

<script language="javascript" type="text\javascript">
function FullPop(Newurl) {
Win = window.open( Newurl,"Monitor", "fullscreen=0,toolbar=1,location=1,directories=1,status=1,menubar=1,scrollbars=1,resizable=1,width=800,height=600,top=50,left=50");
Win.focus();
}
</script>

<asp:button id="MyButton" runat="server" cssclass="mycss" text="View Actual Target" />

更新

Server.UrlEncode 不起作用。相同的行为。

更新 1

根据 Daniel Lew 的回答,我制定了以下解决方案:

protected void Page_Load(object sender, EventArgs e)
{
string unc = @"\\myserver\myfolder\myfile.txt";
string url = string.Format("http://www.mysite.com/page.aspx?a={0}", unc);

MyButton.Attributes.Add("onclick", @"javascript:FullPop('" + this.EscapeforJavaScript(url) + @"')");
}

private string EscapeforJavaScript(string url)
{
return url.Replace(@"\", @"\\");
}

最佳答案

您必须对您放入 URL 中的值进行 URL 编码:

string url = "http://www.mysite.com/page.aspx?a=" + Server.UrlEncode(unc);

编辑:
为了安全地将 url 放入 Javascript 代码中,您还必须将字符串编码为文字字符串:

MyButton.Attributes.Add("onclick", @"FullPop('" + url.Replace(@"\", @"\\").Replace("'", @"\'") + @"')");

(javascript: 协议(protocol)仅在将 Javascript 用作链接的 href 时使用,而不是在将代码放入 onclick 等事件中时使用。)

关于c# - 为什么从查询字符串中删除反斜杠 - ASP.NET 和 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/822180/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com