【问题标题】:ASP WebAPI generic List optional parameterASP WebAPI 通用列表可选参数
【发布时间】:2013-03-16 10:57:27
【问题描述】:

我真的在为这个而苦苦挣扎。我的 Get 方法需要一个通用列表参数,但它必须是可选的。我刚刚这样做了:

public dynamic Get(List <long> ManufacturerIDs = null)

不幸的是,在运行时我得到了错误:

可选参数“ManufacturerIDs”不受支持 'FormatterParameterBinding'。

这里如何获取一个通用列表作为可选参数?

【问题讨论】:

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


    【解决方案1】:

    使用可选参数有什么意义? List&lt;T&gt; 是一个引用类型,如果客户端不提供值,它将简单地为空:

    public HttpResponseMessage Get(List<long> manufacturerIDs)
    {
        ...
    }
    

    【讨论】:

    • 您先生是个天才! :) 完美运行。
    • 根据我的经验,在很多情况下您必须将可选参数显式设置为 null (stackoverflow.com/a/22397723/1454888)。这对我来说是违反直觉的,但它确实有效。谢谢。
    • 我正在使用 swashbuckle 来生成 swagger 文档。在这种情况下,如何定义可选参数确实很重要,请注意:[FromUri] object[] foo = null -->“在新行中提供多个值。” [FromUri] object[] foo --> "在新行中提供多个值(至少需要一个)。" object[] foo --> "(required)" 所以在这种情况下,它真的取决于你对最终用户的期望。
    • 我必须在 List 可选参数之前插入 [FromUri] 属性。正如@Nebula 所注意到的,当您使用 = null 时会有所不同。当您不添加 = null 时,您必须至少指定一个元素。
    猜你喜欢
    • 1970-01-01
    • 2016-09-26
    • 2012-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    相关资源
    最近更新 更多