簡體   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