带破折号的 Asp.net Web Api 查询字符串参数

2024-01-29

我有一个Web.Apisearch 方法接收以下参数:

[DataContract(Namespace = "", Name = "search")]
public class SearchParameters
{
    [DataMember(Name = "property-name")]
    public string PropertyName { get; set; }
}

In the Controller,我有这个动作:

[HttpGet]
public void Search([FromUri]SearchParameters request)
{
    var parameters = 1;
}

我正在尝试为以下内容创建一个友好的名称PropertyName财产 (property-name),但模型绑定器无法识别该参数:

/api/changeLog/search?propertyName=asd  // Works

/api/changeLog/search?property-name=asd // Doesn't work

破折号是保留的查询字符串字符吗?或者我用错了?


事实上,它是按照定义保留的https://www.rfc-editor.org/rfc/rfc3986 https://www.rfc-editor.org/rfc/rfc3986(RFC 3986 的标准页面,定义统一资源标识符,也称为 URI)。

EDIT我太快了——我把保留字符列表中的“=”误读成了“-”。看来破折号确实与未保留的字符一起列出。这对我来说毫无意义,但这只是我的观点...这个 RFC 是官方标准,您会期望服务器尊重该格式 - IIS 可能会尊重这种格式,但 .NET 可能不会(见下文)。编辑结束

通常查询字符串遵循 ITEM '&' ITEM... 格式,您可以将 ITEM 定义为 VARIABLE '=' VALUE。

但就像在编程语言中一样,VARIABLE 不能包含任何导致难以解析名称或将其映射到变量的字符。因此变量名中不能使用“*”、“-”等字符。

EDIT对于 .NET,我希望这是因为 .NET 尝试将查询字符串参数名称映射到方法参数名称。但他们应该允许在[DataMember]属性。由于情况并非如此,我认为他们在构建此功能时没有查阅 RFC...有人愿意详细说明吗?编辑结束

相同信息的其他来源:

  • http://en.wikipedia.org/wiki/URI_scheme http://en.wikipedia.org/wiki/URI_scheme
  • http://en.wikipedia.org/wiki/Uniform_resource_identifier http://en.wikipedia.org/wiki/Uniform_resource_identifier
  • http://www.rfc-editor.org/rfc/rfc3986.txt http://www.rfc-editor.org/rfc/rfc3986.txt
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

带破折号的 Asp.net Web Api 查询字符串参数 的相关文章

  • 将类对象放置在向量中?

    我注意到我可以将一个类放置在一个向量中 这是我的程序 我收到以下错误 out blackjack exe blackjack obj blackjack obj error LNK2019 unresolved external symbo
  • 转换 const void*

    我有一个函数返回一个const void 我想用它的信息作为char 我可以将它投射为 C 风格的罚款 char variable但是当我尝试使用reinterpret cast like reinterpret cast
  • 按扩展名过滤搜索文件返回太多结果

    我正在开发一个 C 控制台应用程序 它必须管理 Windows 操作系统上的文件 我需要获取具有特定扩展名的文件名 列表 我找到了很多解决方案 最建议的是以下一种 HANDLE hFind WIN32 FIND DATA data hFin
  • MVC3中设置下拉列表中的所选项目

    我必须为视图中的下拉列表设置所选项目 但它不起作用 View div class editor label Html LabelFor model gt model Gender div div class editor field Htm
  • 当事件button.click发生时,如何获取按钮名称/标签?

    我以编程方式制作按钮并将它们添加到堆栈面板中 以便每次用户导航到页面时按钮都会发生变化 我正在尝试做这样的事情 当我单击创建的按钮时 它将获取按钮的标签并转到正确的页面 但是 我无法使用 RoutedEventHandler 访问按钮元素
  • 传递 constexpr 对象

    我决定给予新的C 14的定义constexpr旋转并充分利用它 我决定编写一个小的编译时字符串解析器 然而 我正在努力保持我的对象constexpr将其传递给函数时 考虑以下代码 include
  • extern 声明和函数定义都在同一文件中

    我只是浏览了一下gcc源文件 在gcc c 我发现了类似的东西 extern int main int char int main int argc char argv 现在我的疑问是extern是告诉编译器特定的函数不在这个文件中 但可以
  • 即使没有异步,CallContext.LogicalGetData 也会恢复。为什么?

    我注意到CallContext LogicalSetData LogicalGetData不按照我期望的方式工作 内部设置的值async方法得到恢复即使没有异步或任何类型的线程切换 无论如何 这是一个简单的例子 using System u
  • 不同 C++ 文件中的相同类名

    如果两个 C 文件具有相同名称的类的不同定义 那么当它们被编译和链接时 即使没有警告也会抛出一些东西 例如 a cc class Student public std string foo return A void foo a Stude
  • 什么是空终止字符串?

    它与什么不同标准 字符串 http www cplusplus com reference string string 字符串 实际上只是一个数组chars 空终止字符串是指其中包含空字符的字符串 0 标记字符串的结尾 不一定是数组的结尾
  • 获取没有显式特征的整数模板参数的有符号/无符号变体

    我希望定义一个模板类 其模板参数始终是整数类型 该类将包含两个成员 其中之一是类型T 另一个作为类型的无符号变体T 即如果T int then T Unsigned unsigned int 我的第一直觉是这样做 template
  • 在 VS 中运行时如何查看 C# 控制台程序的输出?

    我刚刚编写了一个名为 helloworld 的聪明程序 它是一个 C NET 4 5 控制台应用程序 在扭曲的嵌套逻辑迷宫深处 使用了 Console WriteLine 当我在命令行运行它时 它会运行并且我会看到输出 我可以执行其他命令并
  • memcpy/memmove 到联合成员,这是否设置“活动”成员?

    重要说明 一些评论者似乎认为我是从工会抄袭的 仔细看memcpy 它从普通旧地址复制uint32 t 它不包含在联合中 另外 我正在复制 通过memcpy 到工会的特定成员 u a16 or u x in a union 不直接到整个联盟本
  • 如何在 C# 中创建异步方法?

    我读过的每一篇博客文章都会告诉您如何在 C 中使用异步方法 但由于某些奇怪的原因 从未解释如何构建您自己的异步方法来使用 所以我现在有这段代码使用我的方法 private async void button1 Click object se
  • 模板类中的无效数据类型生成编译时错误?

    我正在使用 C 创建一个字符串类 我希望该类仅接受数据类型 char 和 wchar t 并且我希望编译器在编译时使用 error 捕获任何无效数据类型 我不喜欢使用assert 我怎样才能做到这一点 您可以使用静态断言 促进提供一个 ht
  • 将 Lambda 表达式树与 IEnumerable 结合使用

    我一直在尝试了解有关使用 Lamba 表达式树的更多信息 因此我创建了一个简单的示例 这是代码 如果作为 C 程序粘贴到 LINQPad 中 它可以工作 void Main IEnumerable
  • Visual Studio 2015 - Web 项目上缺少共享项目参考选项卡

    我从 MSDN 订阅升级到 Visual Studio 2015 因为我非常兴奋地阅读有关共享项目的信息 当我们想要做的只是重用代码时 不再需要在依赖项中管理 21382 个 nuget 包 所以我构建了一个测试共享项目 其中包含一些代码
  • C++:二叉树所有节点值的总和

    我正在准备面试 我被一个二叉树问题困住了 我们如何计算二叉树所有节点中存在的值的总和 优雅的递归解决方案 伪代码 def sum node if node NULL return 0 return node gt value sum nod
  • 了解 Lambda 表达式和委托 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我已经尝试解决这个问题很长一段时间了 阅读在线博客和文章 但到目前为止还没有成功 什么是代表 什么是 Lambda 表达式 两者的优点
  • MySqlConnectionStringBuilder - 使用证书连接

    我正在尝试连接到 Google Cloud Sql 这是一个 MySql 解决方案 我能够使用 MySql Workbench 进行连接 我如何使用 C 连接MySqlConnectionStringBuilder 我找不到提供这三个证书的

随机推荐

  • VS Code:“不允许使用属性调试选项”

    我正在尝试学习 Python 并设置 VS Code 的 Python 调试器 如本视频所述 https www lynda com Python tutorials Choosing editor IDE 661773 707220 4
  • 取消令牌和线程不起作用

    我想取消一个线程并在之后运行另一个线程 这是我的代码 private void ResetMedia object sender RoutedEventArgs e cancelWaveForm Cancel cancel the runn
  • Laravel:npm run watch 错误

    我正在开发一个项目并运行 npm run watch 我得到了这个错误 我本来工作正常 但突然出现这个错误 gt watch C projects tests blog gt node node modules cross env dist
  • Mac OS X 中是否有等效的 PTHREAD_MUTEX_ROBUST ?

    我正在使用一个pthread mutex t with PTHREAD PROCESS SHARED在共享内存上进行不同进程之间的同步 如果进程退出但互斥锁保持锁定状态 则互斥锁可能会死锁 有一个PTHREAD MUTEX ROBUST在
  • 有没有办法转发声明协方差?

    假设我有这些抽象类Foo and Bar class Foo class Bar class Foo public virtual Bar bar 0 class Bar public virtual Foo foo 0 进一步假设我有派生
  • 如何停止Python线程中的for循环?

    我正在尝试用 Python 创建一个脚本来学习线程 但我似乎无法停止线程中的 for 循环 目前 我正在使用 pyInstaller 编译脚本并结束线程进程 我知道这不是最好的方法 有人可以向我解释如何根据命令结束线程吗 我读过许多其他问题
  • AJAX 重写后如何重新绑定对话框?

    我有一个学生表 每一行都是他们的名字 一个选择列表来选择他们的课程出勤率 然后单击 消息 链接时会弹出一个对话框 向学生发送消息 该表由选定的课程列表动态驱动 例如 教师选择一门课程 然后表中会重新填充该课程中的所有学生 这是通过 AJAX
  • mongodb:限制对特定集合的读/写访问

    即使用户拥有数据库的读 写访问权限 是否有任何方法可以限制数据库中特定集合的读 写访问权限 例如 我有一个名为 PRODCAST 的数据库 它包含 collA collB collC 和 collD 假设我们有 10 个用户 他们都可以访问
  • JSF:如果省略 GET 参数,则抛出 404 错误

    如果将无效的 GET 参数传递到页面 我需要抛出 404 错误 我已将其附加到验证器 如上所述here https stackoverflow com a 4902757 1973599 但如果根本没有参数 则验证器不会被调用 我该如何处理
  • 无法在 Docker 容器中使用 TypeScript 启动 React

    我试图npm run start一个使用以下命令创建的 React 应用程序 template typescript 因此 Typescript 已安装 作为 React 依赖项 但我的 Docker 容器抱怨一条通用错误消息 TypeSc
  • Nunit 使用的 XML 文件的 XSD

    在哪里可以找到 Nunit 使用的 XML 文件的 XSD 对于结果文件 看结果 xsd http www nunit org docs 2 2 files Results xsd 请注意 它在 Chrome 中对我来说无法正确显示 您可能
  • 是否有 .Net StyleCop 规则警告有关 lock(this)、lock(typeof、lock( 等) 的问题?

    这三种类型的锁显然都是不好的 还有哪些其他类型的锁定是不好的 有 Stylecop FxCop 规则可以解决这个问题吗 如果没有 那么您能帮我实现自定义规则吗 他们的代码一定是相似的 对吧 谢谢 The samples http dtt w
  • 使用 Hibernate 保存点

    问题是我在临时基础上使用休眠中的保存或更新 现在 当我最终触发更新时 它会将其永久存储在数据库中 否则回滚它 如何使用 hibernate 基础创建保存点是 spring like HibernateTemplate hibernateTe
  • Python 在输出中添加额外的换行符

    输入文件 a txt aaaaaaaaaaaa bbbbbbbbbbb cccccccccccc 蟒蛇代码 with open a txt as f for line in f print line 问题 aaaaaaaaaaaa bbbb
  • 滚动到 puppeteer 中 div 的底部不起作用

    所以我试图抓取下图中方框内的所有音乐会 https i stack imgur com 7QIMM jpg https i stack imgur com 7QIMM jpg 问题是列表仅显示前 10 个选项 直到您在该特定 div 中向下
  • 打开 XML 更改表格的字体大小

    for var i 0 i lt data GetUpperBound 0 i var tr new DocumentFormat OpenXml Wordprocessing TableRow for var j 0 j lt data
  • 如何控制 Linq to SQL 发出的“SET”语句

    有什么方法可以控制 Linq to SQL 发出的 SET 语句吗 我在 SQL 分析器中看到这些来自 Linq to SQL 的 SET 选项 结果发现 set arithabort off 导致我们的过程之一花费 45 秒而不是 net
  • 数据库表中ID列的命名

    我想知道人们对数据库表中 ID 列的命名有何看法 如果我有一个名为 Invoices 的表 其中包含一个标识列的主键 我会将该列称为 InvoiceID 这样就不会与其他表发生冲突 而且它是什么很明显 我目前工作的地方他们已将所有 ID 列
  • getResourceAsStream() 返回 null

    我有以下问题 InputStream input FileHandle class getResourceAsStream data sounds back ogg 返回 null 但是 InputStream input FileHand
  • 带破折号的 Asp.net Web Api 查询字符串参数

    我有一个Web Apisearch 方法接收以下参数 DataContract Namespace Name search public class SearchParameters DataMember Name property nam