我正在尝试使用RedirectToAction
MVC方法从另一个操作方法重定向到另一个操作方法。目标操作方法接受查询参数。当我调用destination方法时,查询参数会被Url编码。
目标方法的签名如下:
[Route("\resource\{id}")]
public ActionResult DestMethod(int id, string token)
我使用RedirectToAction从另一个操作方法调用此方法,如下所示
RedirectToAction("DestMethod", new {id = id, token = token});
因此,当控件进入DestMethod时,token参数将进行Url编码。
发生这种行为的原因是什么?如何防止?
编辑:
如果我按原样从RidirectToAction
发送令牌参数,即没有Url Encoding,则DestMethod
接收到的是已编码的令牌参数,而不是解码。这就是令人困惑的行为。如果我从jquery ajax发送编码的参数,一切都会正常工作。
发布于 2018-01-09 01:21:03
网址编码是必要的,以确保地址是正确的,根据标准(Uniform Resource Identifier (URI)似乎是一个)。如果未对参数进行编码,则不能保证浏览器将正确运行,并且重定向实际上包含整个token参数。
由于MVC应该自动解码传入参数,因此编码传出参数在所有正常情况下都应该是所需的行为。我能想到的唯一不需要这样做的情况是,如果令牌已经是URL编码的,而我建议您在RedirectToAction中使用令牌之前对其进行解码。
https://stackoverflow.com/questions/48154785
复制相似问题