2015-08-03 6 views
0

Я пишу модуль (frontend extjs 4.2.1, backend asp.net mvc с EF). Я встречаю небольшую проблему: , когда пользователь нажимает кнопку поиска, отобразится панель extjs, и он может заполнить некоторые пробелы внутри текстового поля. после того, как была предоставлена ​​информация о фильтрах, сторона-сервер будет использовать соответствующий код C# для обработки некоторых записей из базы данных mssql, вот моя проблема:лучший способ обработки

, если пользователь ничего не вставляет в поле, стандартный и лучший практика будет заключаться в том, что этим полем будет пренебрегать, однако значение пустого текстового поля будет «', которое я не могу использовать в качестве строки фильтра, например: есть текстовое поле с именем« секс », если использование не использует ничего в поле, значение, переданное серверу, будет '', если я напишу лямбда-выражение таким образом: var filter = x => x.sex == ""; По-видимому, это не сработает. Вы можете сказать, что я могу использовать if-else для определения материала. но если у меня много полей, использование if-else будет действительно пустой тратой времени. так, что лучшая практика, чтобы сделать это

ответ

2

Существуют различные способы, чтобы написать это условие, но то, что вы говорите о том, состояние так что это на самом деле не «пустая трата времени», чтобы написать код для этого.

Например, если у вас есть IEnumerable<T>, и вы хотите, чтобы отфильтровать его, вы можете сделать что-то вроде этого:

if (string.IsNullOrWhitespace(someFieldValue)) 
    result = result.Where(x => x.SomeField.Equals(someFieldValue)); 

Или, если вы построения выражений, можно условно определить выражение. Что может выглядеть примерно так (это полностью от руки, так что я не уверен, что это будет работать, как это, но вы получите идею):

var filter = string.IsNullOrWhitespace(someFieldValue) ? 
      x => true : 
      x => x.SomeField.Equals(someFieldValue); 

Вы можете абстрактное это за некоторые частные вспомогательные методами, так что потребляющую код немного чище, вы можете реорганизовывать обычно рукоятью фильтры, чтобы уменьшить дублирование и т.д. Но в конце дня логика ваш код выражения является:

в конкретном состоянии известно, сделать одну вещь. В других штатах сделайте что-нибудь еще.

Это условное заявление.

0

Это может быть предотвращено на стороне клиента перед запросом, отправленным на сервер.

На стороне сервера вы можете абстрагировать часть валидации со служебного уровня.

В моей типовой пружине MVC-приложение -
1.Request отправляется на контроллер.
2.Controller делегаты для проверки.
3.Если успех, контроллер делегирует уровень обслуживания.
4. В случае сбоя контроллер перенаправляет пользователя на страницу с ошибкой.

Смежные вопросы