【问题标题】:Same name string parameters with differ case were parsed into one string parameter by comma delimited不同大小写的同名字符串参数被解析为一个以逗号分隔的字符串参数
【发布时间】:2019-06-15 19:02:19
【问题描述】:

在 javascript 请求中,我添加了两个名称相同但大小写不同的参数

  1. *.setPostDataItem("FluentSearch", scope.search); (abc)
  2. *.setPostDataItem("fluentSearch", scope.search); (abc)

我的服务器端代码控制器->操作将其解析为

string FluentSearch = abc, abc

所以在服务器参数中,我们有一个字符串参数重复值,以逗号分隔。

我希望服务器应该解析请求并在没有逗号的情况下编写它们。
Asp.Mvc pre 在哪里以及为什么用逗号两次使用相同的参数? 是之前具体的action executor吗?

【问题讨论】:

  • 欢迎来到 Stack Overflow!我将您的代码示例缩进了 4 个空格,以便正确呈现;我还在您的解释中添加了一些特定的单词作为代码。正确格式化您的代码和问题可以提高可读性,因此更多的人会理解您的问题并更容易回答。查看editing help 了解有关格式化的更多信息。
  • 感谢您的建议!

标签: c# .net asp.net-mvc routing action


【解决方案1】:

据我所知,客户端似乎发送了两个不同的参数,但服务器将它们视为一个将它们组合为 csv 的参数。

看到这个答案 https://stackoverflow.com/a/32127030/1384239

摘自答案

这东西是否是完全由权威机构决定的 是否区分大小写。

在 C# 和 IIS 的情况下,已解析查询的后备存储 HttpRequest 对象中的字符串是 System.Collections.Specialized.NameValueCollection 恰好是 不区分大小写(默认)。

现在看name value collection,它特别说

哈希码提供者为 名称值集合。默认哈希码提供程序是 CaseInsensitiveHashCodeProvider。

所以它似乎可以更改为区分大小写。我没有尝试过。你可以试试。查询字符串参数的这种行为应该是相同的。

【讨论】:

  • 太好了,谢谢!请指出我在哪里可以看到默认情况下在 asp.net mvc 边界中实现 csv 解析器?什么实现决定将两个键组合成一个以逗号分隔的参数?
  • 请告诉我
猜你喜欢
  • 1970-01-01
  • 2013-05-31
  • 1970-01-01
  • 2011-02-20
  • 2016-12-22
  • 1970-01-01
  • 2015-05-24
  • 2014-11-27
  • 2019-06-14
相关资源
最近更新 更多