7

ASP.NETWebAPIプロジェクトがあります。次のように、いくつかのクエリオプションをAPIコントローラーに渡そうとしています。

http://localhost:61736/api/Enquiries?
callback=callback&$top=30&$skip=30&orderby=EnquiryId
&$inlinecount=allpages&_=1346164698393

しかし、私は次のようになります。

The query parameter '$inlinecount' is not supported.

使ってみると同じようになります$callback$format

私が間違っていることについて何か考えはありますか?によると:http://msdn.microsoft.com/en-us/library/ff478141.aspx私はそれらを使用できるはずですか?

4

4 に答える 4

7

ASP.NET Web APIは、このブログ投稿に記載されているように、ODataの限定的なサポートのみを提供します。そのリストにあなたが言及しているクエリパラメータが表示されませんでした。

于 2012-08-28T15:21:54.430 に答える
2

$ inlinecountのサポートは、2012年12月6日にプロジェクトにチェックインされました。おそらく、次のリリースにこのサポートが含まれる予定です。最新のソースをダウンロードするか、ナイトリービルドを入手できます。

http://aspnetwebstack.codeplex.com/SourceControl/changeset/ed65e90e83c8

Revision: ed65e90e83c8f9391b4f4806d305c83f55d28ff6
Author: youssefm < youssefm@microsoft.com >
Date: 12/6/2012 1:51:44 PM
Message:
[OData] Add support for the $inlinecount query option

毎晩のパッケージはhttp://www.myget.org/F/aspnetwebstacknightly/にプッシュされると思いますが、自分自身を確認していません。

于 2013-01-18T18:07:44.793 に答える
2

現在のバージョンでは、WebAPIは$filter、$ orderby、$ top、および$skipのみをサポートします。QueryableAttributeをオーバーライドして、ODataプロトコルのサポートを追加できます。パブリックnugetリリース後のチェックインにより、ValidateQueryメソッドが仮想化されたため、検証をバイパスするためにオーバーライドできます。http://www.myget.org/F/aspnetwebstacknightly/でナイトリービルドを試してください。

ODataQueryOptionsを使用することもできます。次のコードは、サポートされていないオプションを検出したときに例外をスローしないことを除いて、[Queryable]属性と同等です。

public IEnumerable<Product> Get(ODataQueryOptions options) 
{
    return options.ApplyTo(_db.Products as IQueryable) as IEnumerable<Product>; 
}

$inlinecountはODataQueryOptions.RawValues.InlineCountで取得できます。ODataクエリのサポートの詳細については、http://blogs.msdn.com/b/alexj/archive/2012/08/21/web-api-queryable-current-support-and-tentative-roadmap.aspxを参照してください。

于 2012-09-02T07:24:05.917 に答える
1

万が一KendoUIを使用している場合、この投稿では、JSONPではなくJSONに切り替えて、$callbackなどの一部のオプションを無効にする方法について説明します。

于 2013-04-28T21:16:35.043 に答える