C#MVC - RedirectToAction方法编码查询参数

时间:2018-01-08 17:00:58

标签: c# asp.net-mvc redirect url-encoding

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

目标方法具有以下签名:

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

我使用RedirectToAction从另一个操作方法(如下面的

)调用此方法
RedirectToAction("DestMethod", new {id = id, token = token});

因此,当控件进入DestMethod时,token参数将获取Url Encoded。

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

编辑:

如果我按原样发送令牌参数,即没有Url编码,RidirectToActionDestMethod正在接收它,并且不对其进行解码。这种行为令人困惑。如果我从jquery ajax发送编码参数,那么一切都很好。

1 个答案:

答案 0 :(得分:0)

需要Url编码以确保地址符合标准(Uniform Resource Identifier (URI)似乎是正确的)。如果参数未编码,则无法保证浏览器能够正常运行,并且重定向实际上包含整个令牌参数。

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