【问题标题】:Optional parameter odata function c#可选参数odata函数c#
【发布时间】:2016-07-05 09:41:16
【问题描述】:

我为 GeminiTickets 定义了一个这样的函数:

var geminiTickets = builder.EntitySet<GeminiTicket>("GeminiTickets");

        var geminiTicketsParam = geminiTickets.EntityType.Collection
            .Function("GetNewTickets")
            .Returns<ReportDataVM>();
        geminiTicketsParam.CollectionParameter<int>("projectIds");
        geminiTicketsParam.Parameter<DateTime?>("startDate");
        geminiTicketsParam.Parameter<DateTime?>("endDate");

在 GeminiTicketsController...

public async Task<IHttpActionResult> GetNewTickets([FromODataUri] List<int> projectIds, DateTime? startDate = null, DateTime? endDate = null) {...};

当我想用所有参数访问这个函数时,一切都很好: http://example.com/odata/GeminiTickets/Service.GetNewTickets(projectIds=[1,2,3],startDate=2016-06-10,endDate=2016-06-22)

但是如果我根本不发送参数,如果我尝试发送例如只有 projectIds,IIS 给我一个 500 内部错误: http://example.com/odata/GeminiTickets/Service.GetNewTickets(projectIds=[1,2,3])

我发现我们可以设置一个参数是可选的:

geminiTicketsParam.Parameter<DateTime?>("startDate").OptionalParameter = true;

但它什么也没做。有什么想法吗?

谢谢!

【问题讨论】:

    标签: c# odata


    【解决方案1】:

    OptionalParameter表示可以为null,可以试试

    startDate=null,endDate=null
    

    【讨论】:

    • 是的,最后我做到了。所以我必须检查javascript中的每个参数,看看是否有值。如果没有,我只是用 null 填充参数。这很糟糕,因为我必须从数据库中加载所有参数定义,即使我真的需要用户设置的参数中的值。
    猜你喜欢
    • 1970-01-01
    • 2016-09-22
    • 1970-01-01
    • 1970-01-01
    • 2018-08-03
    • 2012-10-15
    • 1970-01-01
    • 2015-04-30
    • 1970-01-01
    相关资源
    最近更新 更多