ASP.NET 核心 FromQuery 获取内部带有点符号的无效参数

Jac*_*bus 5 c# asp.net asp.net-mvc asp.net-core-mvc asp.net-core

我正在尝试将一些带有 GET 请求的参数发送到查询字符串中的控制器。我将查询字符串中的所有参数Dictionary<string, string>使用[FromQuery]. 它运行良好,直到参数名称之一包含点 ( .) 符号。我检查了Request.Query对象,看起来它解析得很好,但是我的 Dictionary 对象得到了这个,确切的项目错误。所以它看起来像[FromQuery]活页夹中的错误,或者我做错了什么。下面的代码Request.Query和我的调试值parameters在此处输入图片说明

这是发送的查询字符串的样子: ?query=&InspectionType=Safety&ItemType=InspectionPoint&RecordParentGUID=9275bee2-0a2d-461c-8835-51880e76f035&parent.ResultClassCode=parent.ResultClassCode

更新:从在 .net 开发团队工作的 Eilon Lipton 得到答案,简而言之 - 这是设计使然。点号“.” 和 '[', ']' 是用于表示属性和索引器的特殊字符。完整答案在这里:https : //github.com/aspnet/Mvc/issues/6746

Mat*_*nda 5

这 。(dot)、[ 和 ] 字符在 ASP.NET MVC Core 内部到处用作模型绑定过程中的路径分隔符,并且 (AFAIK) 没有办法解决这个问题。

如果要从查询字符串访问原始值,这Request.Query是迄今为止最简单的解决方案。

把它变成一个纯粹的Dictionary<string, string>

Request.Query.ToDictionary(kvp => kvp.Key, kvp => kvp.Value);
Run Code Online (Sandbox Code Playgroud)