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

标签 c# asp.net asp.net-mvc asp.net-core asp.net-core-mvc

我正在尝试通过 GET 请求将一些参数发送到查询字符串中的 Controller 。我将查询字符串中的所有参数都设置为一个 Dictionary<string, string>使用 [FromQuery] .它运行良好,直到其中一个参数名称包含点 ( .) 符号。我检查了 Request.Query对象,它看起来解析得很好,但我的 Dictionary 对象得到了这个,确切的项目是错误的。所以它看起来像 [FromQuery] 中的错误 Binder 或者我做错了什么。调试值为 Request.Query 的代码和我的parameters下面:enter image description here

这是发送的查询字符串的样子: ?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

最佳答案

. (点)、[ 和 ] 字符在 ASP.NET MVC Core 内部随处使用,作为模型绑定(bind)过程中的路径分隔符,而且(据我所知)没有办法解决这个问题。

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

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

Request.Query.ToDictionary(kvp => kvp.Key, kvp => kvp.Value);

关于c# - ASP.NET 核心 FromQuery 获取内部带有点号的无效参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45997570/

相关文章:

javascript - Web API - Controller 设计

javascript - 具有相同 url 的已更改图像不会在 IE 中重新加载

asp.net - jQuery.change + 内联 onchange fn() 导致 fn 执行两次

c# - 在浏览器中编辑文档 (.doc)

c# - 如何在 ASP MVC 5 中将 MediatR 与 Autofac 一起使用?

c# - 将 ListBoxFor (Multiple) 绑定(bind)回模型

c# - .Net 形式焦点

C# ThreadPool 一个线程阻塞另一个?

c# - 将 cookie 从 CookieContainer 写入 IE cookie 存储

c# - 格式化 DateTime 错误 "No overload for method ' ToString' 需要 1 个参数”