2016-06-22 4 views
0

は、私はこのようなGeminiTicketsのための関数を定義します。オプションのパラメータは、ODATA関数c#

GeminiTicketsControllerで
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"); 

が...

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内部エラーを与える:

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

しかし、それは何もしないです: http://example.com/odata/GeminiTickets/Service.GetNewTickets(projectIds=[1,2,3])

私たちは、オプションのようにパラメータを設定できることがわかりました。何か案が ?

ありがとうございました!

答えて

1

OptionalParameterはそれがnullになることを意味し、私はこれをしなかった終わりそう

startDate=null,endDate=null 
+0

で試すことができます。だから私はjavascriptの各パラメータをチェックしなければならない、値があるかどうか見てください。そうでない場合は、パラメータをnullで埋めるだけです。それは、私が実際にユーザーによって設定されたパラメータからの値を本当に必要としていても、データベースからすべてのパラメータ定義をロードする必要があるため、悪いことです。 – Sproulx

関連する問題