【问题标题】:How to bind a Dictionary from URL query, based on parameter name prefix?如何根据参数名称前缀从 URL 查询绑定字典?
【发布时间】:2016-11-16 10:35:52
【问题描述】:

我需要处理http://host.my/path?normal=1&othernormal=2&dict_a=b&dict_x=y

这是我最近的尝试,基于How to use Bind Prefix?

public string Get(int normal, int othernormal,
    [Bind(Prefix="dict_")]
    Dictionary<string, string> dict) { ... }

这会创建一个字典,但是它是空的。

需要注意的是,dict_adict_x 事先并不知道。例如。必须允许dict_abracadabra=bla

【问题讨论】:

  • 您需要将 url 设为 ...&amp;dict[0].Key=b&amp;dict[0].Value=y 才能绑定到您的参数(没有 [Bind(Prefix="dit_")] 为什么不只是参数 string dict_a, string dict_x 并从值创建字典?
  • @StephenMuecke,因为我不控制客户端。我的问题其实有你第二个问题的答案。
  • 您只需要从查询字符串中读取值(或创建自定义模型绑定器来执行此操作)并根据值创建字典。

标签: asp.net-mvc asp.net-web-api asp.net-core


【解决方案1】:

您可以将这些值绑定到没有绑定前缀的字典。字典将使用查询字符串中的任何简单值。

您的示例查询和方法签名(没有绑定前缀),它似乎按预期工作几乎

我已经在 MVC 1.1.0-preview1-final 中对此进行了测试。

来自此处的文档:https://docs.microsoft.com/en-us/aspnet/core/mvc/models/model-binding

【讨论】:

    猜你喜欢
    • 2019-06-01
    • 2021-07-17
    • 1970-01-01
    • 1970-01-01
    • 2010-11-06
    • 1970-01-01
    • 2016-09-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多