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) 解决了这个问题

这个非常强大的库让我可以用一行代码完成我正在寻找的东西:

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 回答
0

ODataQueryOptions<T>现在仅支持 Web API。也就是说,这是一个有趣的场景。我已经在 codeplex 上打开了这个问题来跟踪它。

于 2013-07-10T01:11:06.513 回答