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