繁体   English   中英

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

[英]ASP.NET core FromQuery getting invalid parameters with dot sign inside

我正在尝试在查询字符串中将一些带有 GET 请求的参数发送到控制器。 我正在使用[FromQuery]将查询字符串中的所有参数添加到一个Dictionary<string, string>中。 它运行良好,直到其中一个参数名称包含点 ( . ) 符号。 我检查了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

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

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

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

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

您可以使用局部视图将 parent.ResultClassCode 展平为 ResultClassCode 吗?

部分可能看起来像这样

@model parent
<div class="form-group">
    <label asp-for="ResultClassCode"></label><span asp-validation-for="ResultClassCode" class="text-danger"></span>
    <input asp-for="ResultClassCode" class="form-control">
</div>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM