gpt4 book ai didi

c# - 使用Request.QueryString,斜杠(/)在第一个querystring中存在时添加到最后一个querystring

转载 作者:行者123 更新时间:2023-11-30 14:40:33 26 4
gpt4 key购买 nike

这是我在 stackoverlow 上的第一篇文章,我在任何其他文章中都找不到解决这个问题的方法,所以在这里:

我有一个网页在 url 中发送两个查询字符串:

example.aspx?name=<%=name%>&sku=<%=sku%>

然后我使用 Request.QueryString["name"];Request.QueryString["sku"]; 收集值

当我查看发送查询字符串的页面源上的 url 时,一切看起来都很好,但如果“名称”包含正斜杠 (/),当我检索时,它会以某种方式附加到“sku”的末尾查询字符串的值。我尝试用 %2F 替换/但这不起作用。如果“name”查询字符串没有斜杠,一切看起来都是正确的。

有什么想法吗?

编辑:我最终不得不双重编码 (server.urlencode) 和双重解码才能正常工作。感谢您的帮助!

最佳答案

实际上,您应该使用 HttpServerUtility.UrlEncode 对 URL 的值进行编码方法:

example.aspx?name=<%=Server.UrlEncode(name)%>&sku=<%=Server.UrlEncode(sku)%>

URL encoding ensures that all browsers will correctly transmit text in URL strings. Characters such as a question mark (?), ampersand (&), slash mark (/), and spaces might be truncated or corrupted by some browsers. As a result, these characters must be encoded in tags or in query strings where the strings can be re-sent by a browser in a request string.

编辑:

让我们用您提供的值来检查一下:name = Bellagio™ 16 1/2"高下桥户外壁灯sku = 46910:首先我创建了一个包含 2 个属性的页面:

public string Name
{
get
{
return "Bellagio™ 16 1/2\" High Downbridge Outdoor Wall Light";
}
}

public string Sku
{
get
{
return "46910";
}
}

然后在页面中添加链接定义:

<a href='1.aspx?name=<%=Server.UrlEncode(Name)%>&sku=<%=Server.UrlEncode(Sku)%>'>
this is a link
</a>

然后抓取这些值(先点击链接):

protected void Page_Load(object sender, EventArgs e)
{
var name = Request.QueryString["name"];
var sku = Request.QueryString["sku"];
}

这些值与您提供的值完全相同:Bellagio™ 16 1/2\"High Downbridge Outdoor Wall Light46910

不幸的是,我无法重现您在第一条评论中发布的错误 URL:LifeSizePDF.aspx?productname=Bellagio&%238482%3b+16+1%2f2&quot%3b+High+Downbridge +Outdoor+Wall+Light&shortsku=46910%2f

关于c# - 使用Request.QueryString,斜杠(/)在第一个querystring中存在时添加到最后一个querystring,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5185428/

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