У меня есть таблица в приложении ASP.NET MVC, которую я хочу сортировать (на стороне сервера) и фильтровать с помощью AJAX. Я хотел, чтобы его было довольно легко использовать в других местах, и мне не хотелось жестко кодировать сортировку и фильтрацию в выражениях запроса, поэтому я искал способ динамического построения выражений, и лучший способ сделать это, который я нашел, был с Dynamic LINQ .
Пользовательский ввод с URL-адреса, как показано ниже, напрямую вставляется в динамический Where или OrderBy.
/Orders?sortby=OrderID&order=desc&CustomerName=Microsoft
Это приведет к двум выражениям:
OrderBy("OrderID descending")
Where(@"CustomerName.Contains(""Microsoft"")")
Хотя я понимаю, что он не будет передан в базу данных напрямую, и вставка прямого SQL здесь не сработает, потому что его нельзя отразить в свойстве, и он безопасен для типов и все такое, мне интересно, есть ли кто-то более творческий, чем я мог бы найти способ использовать его в любом случае. Один эксплойт, о котором я могу думать, заключается в том, что можно сортировать/фильтровать свойства, которые не видны в таблице, но это не так уж вредно, поскольку они все равно не будут отображаться, и это можно предотвратить с помощью хеширования.
Единственный способ, которым я разрешаю прямой ввод данных пользователем, — это OrderBy и Where.
Просто уточняю, спасибо :)