【问题标题】:ASP.NET Webforms and URL encodingASP.NET Webforms 和 URL 编码
【发布时间】:2013-08-19 06:11:18
【问题描述】:

我在使用 GET 参数和 ASP.NET 时遇到问题。我有一个参数,其值包含非 ASCII 字符 ("Físico")。当 ASP.NET 生成表单时,它会将操作设置为

<form method="post" action="SomePage.aspx?query=F%u00edsico">

该字符串似乎没有被 ASP.NET 正确编码。这会导致 jQuery UI(“格式错误的 URI”)出现问题。我错过了什么吗?浏览器不应该正确编码 URL,ASP.NET 在生成表单时不应该正确编码吗?

【问题讨论】:

  • 显示你用来生成表单动作的代码。
  • 我不生成表单的动作,我只是链接到 SomePage.aspx?query=Físico。 ASP.NET 然后生成它的表单(像往常一样)。
  • 知道了,可以复制问题。
  • 我为此提交了一个针对 ASP.NET 的错误。对我们的古怪行为感到抱歉。 :( 作为一种解决方法,您可以从 Page_Load() 设置 Form.Action = Request.RawUrl;。这是 Hanlet 解决方案的一种稍微简单的形式。
  • 您能否将query 参数放在隐藏输入中,以避免查询编码不正确?

标签: asp.net jquery-ui unicode get webforms


【解决方案1】:

Page_Load 事件上尝试此作为解决方法:

Vb.Net

Dim unicode As UnicodeEncoding = New UnicodeEncoding
form1.Action = unicode.GetString(unicode.GetBytes(Request.Url.ToString()))

c#

UnicodeEncoding unicode = new UnicodeEncoding();
form1.Action = unicode.GetString(unicode.GetBytes(Request.Url.ToString()));

由于í 中的波浪号,查询字符串被编码为 un​​icode

【讨论】:

    猜你喜欢
    • 2016-01-15
    • 1970-01-01
    • 2012-12-16
    • 2010-11-20
    • 1970-01-01
    • 1970-01-01
    • 2011-01-25
    • 1970-01-01
    • 2013-01-01
    相关资源
    最近更新 更多