2014-12-23 3 views
0

Я использую Breeze.js и C# WebAPI с BreezeController. Я хочу обновить объект на веб-странице клиента, передать его в WebAPI для обновления, сохранить объект и отправить предупреждение (-ы).Возврат предупреждений вместо ошибок API веб-интерфейса Breeze

[HttpPost] 
public SaveResult SaveChanges(JObject saveBundle) {} 

Есть ли способ вернуть SaveResult с информацией о предупреждении? Не ошибка, предупреждение.

Пример: Я спасаю возраст резидента. Если возраст равен <, а не 50 [это не ошибка] Я все же хочу предупредить пользователя о том, что это может быть неправильный возраст для резидента на основе моих бизнес-правил.

saveResult.Errors.Add(new EntityError() { 
         PropertyName = "Age", 
         ErrorName = "Warning", 
         ErrorMessage = "The age of the resident is less than 50. You may want to verify that you entered the correct age." 
        }); 

Если я сделаю это (Это поведение я хочу):

  • Объект будет сохранен.
  • Предупреждающее сообщение отправляется обратно в структуру saveResult.
  • Сущность правильно обновлена ​​на сервере и отправлена ​​обратно с помощью saveResult (то есть сгенерированный системой первичный ключ моей сущности содержит новый идентификатор).

Однако (это не поведение, я хочу):

  • На клиенте, объект не обновляется. то есть ПК не обновляется, и объект все еще находится в состоянии ожидания (не сохраняется).

Я уверен, что тот факт, что я возвращаю ошибку в SaveResult, является проблемой, поскольку Breeze.js, вероятно, интерпретирует это (правильно) как ошибку. Однако я не вижу, как вернуть предупреждение с использованием модели Breeze и все еще иметь все функциональное.

Кстати, я знаю, что могу выполнить эту проверку на стороне клиента, прежде чем вызывать WebAPI, но я хочу, чтобы все мои проверки были серверными, особенно потому, что некоторые из этих проверок довольно сложны.

Любые предложения?

ответ

0

Прямо сейчас breeze не имеет понятия «предупреждения», а не «ошибки», но я согласен с тем, что концепция полезна. Можете ли вы добавить это как запрос функции на ветерок пользователя Voice (http://breezejs.uservoice.com/), и если у него будет достаточно интереса, мы обязательно посмотрим на него?

+0

Спасибо за предложение. Я потратил время, чтобы добавить это как предложение бриза. Надеюсь, это перейдет в следующий выпуск. В то же время, любая идея, как я могу это реализовать? –

+0

Я не думал об этом подробно, но вы могли бы добавить unmapped свойство, называемое «предупреждения» каждому типу entityType, и заполнить его на сервере во время сохранения при возникновении предупреждения. Затем это также будет отправлено клиенту, и сохранение завершится нормально. –

+0

Отличная идея, не отображаемые свойства возвращаются и отображаются клиентом бриза. Затем я могу получить предупреждения. –

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