我将尝试使用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编码,RidirectToAction
,DestMethod
正在接收它,并且不对其进行解码。这种行为令人困惑。如果我从jquery ajax发送编码参数,那么一切都很好。
答案 0 :(得分:0)
需要Url编码以确保地址符合标准(Uniform Resource Identifier (URI)似乎是正确的)。如果参数未编码,则无法保证浏览器能够正常运行,并且重定向实际上包含整个令牌参数。
由于MVC应自动解码传入,因此编码传出参数应该是所有正常情况下的所需行为。我能想到的唯一一个不需要的情况是,如果我建议您在RedirectToAction中使用令牌之前解码令牌,那么令牌已经是URL编码的。