C# MVC - 重定向到操作方法编码查询参数



我将尝试使用 RedirectToAction MVC 方法从另一个操作方法重定向到操作方法。目标操作方法接受查询参数。当我调用目标方法时,查询参数会进行 Url 编码。

目标方法具有以下签名:

[Route("resource{id}")]
public ActionResult DestMethod(int id, string token)

我从另一个操作方法使用重定向到操作调用此方法,如下所示

RedirectToAction("DestMethod", new {id = id, token = token});

因此,当控件进入 DestMethod 时,令牌参数将进行 Url 编码。

这种行为的原因是什么以及如何防止它?

编辑:

如果我按原样发送令牌参数,即没有 Url 编码,则从 RidirectToActionDestMethod接收编码后,不会对其进行解码。这是令人困惑的行为。如果我从 jquery ajax 发送编码参数,一切正常。

需要 URL 编码来确保地址根据标准是正确的(统一资源标识符 (URI( 似乎是那个(。如果未对参数进行编码,则无法保证浏览器将正常运行,并且重定向实际上包含整个令牌参数。

由于 MVC 应该自动解码传入,因此在所有正常情况下,对传出参数进行编码应该是想要的行为。我能想到的唯一一种情况是,如果令牌已经进行了 URL 编码,当我建议您在 RedirectToAction 中使用它之前对其进行解码时。

最新更新