我正在使用一个使用混淆 id 来显示 URL/路由的站点。
代替
控制器/编辑/23
它会显示类似
/控制器/编辑/ftoGI8yFctjGPLYBl1ButA%3d%3d
在用户成功在表单上执行“创建”后,我试图重定向到 /edit 路由。在控制器中我有:
return Json(new { responseText = "create_complete_redirect", url = Url.Action("Edit", "MyController", new { id = EncryptId(returnObj.ObjectId) }) });
EncryptId 是一个生成混淆 id 的函数。它在许多其他地方都可以正常工作,所以这不是问题。
问题是当我在客户端收到 json 数据时,url 出来:
/控制器/编辑/ftogi8yfctjgplybl1buta%253d%253d
加密 ID 的所有区分大小写的部分现在都强制小写。发生这种情况有原因吗?开发人员工具中网络选项卡上的响应显示数据从服务器下来,全部小写。
似乎问题出在 Url.Action 调用中。如果我在控制器中的代码的那部分设置断点,并运行 EnctrypId 函数,它显示生成了正确的字符串。
如果我尝试在控制器中运行整个 Url.Action 命令,则会出现错误
“表达式不能包含匿名类型”。
知道为什么 url.action 参数不保留大小写吗?