2
public class XYZController : Controller
    {            

        public ActionResult Index(ODataQueryOptions<Security> options = null)
        {
            var xyzs= GetXYZs().AsQueryable();
            var results = options == null ? xyzs: options.ApplyTo(xyzs);
            return View(xyzs);
        }
     }

これにより、「このオブジェクトにパラメーターなしのコンストラクターが定義されていません」というエラーが発生します。

基本的に、odata 準拠のパラメーターを通常のコントローラーに渡したいと考えています。

これはできませんか?

4

2 に答える 2

2

私は一時的に (通常のコントローラーが ODataQueryOptions を使用できるようになるまで)、Linq2Rest (NuGet: install-package Linq2Rest) を使用してこれを解決しました。

この非常に強力なライブラリにより、私が探していたものを 1 行のコードで達成することができました。

using Linq2Rest;

 public ActionResult Index()
        {
            var filteredSource = GetXYZs().AsQueryable().Filter(Request.Params);

            return View(filteredSource);
        }

これで、このコントローラーのインデックス アクションを次のようにヒットできます: xyz.com?$filter=something eq 'foo' and another gt 3&$orderby another

于 2013-07-11T14:51:57.470 に答える