在.NET MVC中向URL添加过滤器的最佳方法

Zif*_*fik 6 asp.net-mvc partial-views filter odata asp.net-web-api

我会尝试尽可能简洁.

  • 网页包含一个允许过滤和排序的表
  • 过滤和排序的更改应反映在URL中,以便用户可以为已过滤的视图添加书签或共享.

问题是:允许所有排序和过滤器语法成为URL的一部分并在服务器上轻松解释/使用它而无需编写一堆解释它的自定义代码的有效约定是什么?

我一直在做一些研究,我遇到了OData URI约定,我喜欢他们做事的方式. http://www.odata.org/developers/protocols/uri-conventions

更多研究表明,MVC 4 Web API允许通过返回IQueryable来使用该约定.除了一个部分之外,这看起来很棒......我现在还没有实现RESTful API,而这似乎与它有关.那么我怎样才能使用像OData这样的东西并仍然返回一个View或PartialView?是否有能够将OData URI约定解析为C#对象的东西?

如果有人对这个问题或建议有任何见解,我会全力以赴.

nix*_*xon 0

至于您问题的 url 约定部分,我认为您已经用 OData 回答了您自己的问题。至于将此数据放入 C# 对象中,我将使用以下方法:

使用动作过滤器解释 url 参数并将其解析为 ac# 对象。在您的操作过滤器中,将 url 参数添加到路由数据中,并且 C# 对象将在您的操作中可用。

ASP.NET MVC 将对象从自定义操作过滤器传递到操作

看一下 Telerik MVC 网格,他们使用 GridAction 操作过滤器,它几乎可以满足您的要求。