我将尝试使用 RedirectToAction
MVC 方法从另一个操作方法重定向到操作方法。目标操作方法接受查询参数。当我调用目标方法时,查询参数会进行 Url 编码。
目标方法具有以下签名:
[Route("resource{id}")]
public ActionResult DestMethod(int id, string token)
我从另一个操作方法使用重定向到操作调用此方法,如下所示
RedirectToAction("DestMethod", new {id = id, token = token});
因此,当控件进入 DestMethod 时,令牌参数将进行 Url 编码。
这种行为的原因是什么以及如何防止它?
编辑:
如果我按原样发送令牌参数,即没有 Url 编码,则从 RidirectToAction
,DestMethod
接收编码后,不会对其进行解码。这是令人困惑的行为。如果我从 jquery ajax 发送编码参数,一切正常。
需要 URL 编码来确保地址根据标准是正确的(统一资源标识符 (URI( 似乎是那个(。如果未对参数进行编码,则无法保证浏览器将正常运行,并且重定向实际上包含整个令牌参数。
由于 MVC 应该自动解码传入,因此在所有正常情况下,对传出参数进行编码应该是想要的行为。我能想到的唯一一种情况是,如果令牌已经进行了 URL 编码,当我建议您在 RedirectToAction 中使用它之前对其进行解码时。