我有以下简单的控制器,它只接受路由参数中的字符串并按原样返回:
[HttpGet("string/{value}")]
public ActionResult Echo([FromRoute] string value)
{
return new JsonResult(new { output = value });
}
当我在字符串中提供除“%2F”之外的任何百分比编码字符时,它工作正常,即它返回相应的字符串表示形式:
/string/%21%23%28 -> { "output": "!#(" }
但是,对于 %2F,它似乎返回百分比编码的字符串本身,而不是相应的正斜杠字符,即“/”:
/string/%2F -> { "output": "%2F" }
如何要求它在输出中返回“/”而不是“%2F”?
虽然这是一个老问题,但您可以使用
HttpUtility.UrlDecode(value)
让它解码它在控制器端点上编码的内容。
这里是类似问题的更深入答案的链接https://stackoverflow.com/a/46255640/759645
试试这个
value=value.Replace("%2F","/")
return new JsonResult(new { output = value });