我在ASP.NET MVC应用程序中有一个表格,我希望能够使用AJAX进行排序(服务器端)和过滤。我希望它在其他地方也能够很容易地使用,不想将排序和过滤硬编码到查询表达式中,所以我寻找了一种动态构建表达式的方法,最好的方法是使用Dynamic LINQ。
用户从以下URL中输入的内容直接插入到动态Where或OrderBy中。
用户从以下URL中输入的内容直接插入到动态Where或OrderBy中。
/Orders?sortby=OrderID&order=desc&CustomerName=Microsoft
这将导致两个表达式:
OrderBy("OrderID descending")
Where(@"CustomerName.Contains(""Microsoft"")")
我知道直接将 SQL 插入到这里不起作用,因为它不能被反射到属性上,而且它是类型安全的。虽然如此,如果有人比我更有创意,可能会找到一种利用它的方法。我能想到的一种利用方式是可以对不在表中可见的属性进行排序/过滤,但这并不会造成太大危害,因为它们仍然不会被显示,并且可以通过哈希来防止。
唯一允许直接用户输入的方式是使用 OrderBy 和 Where。
只是确保一下,谢谢 :)