Я использую 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, но я хочу, чтобы все мои проверки были серверными, особенно потому, что некоторые из этих проверок довольно сложны.
Любые предложения?
Спасибо за предложение. Я потратил время, чтобы добавить это как предложение бриза. Надеюсь, это перейдет в следующий выпуск. В то же время, любая идея, как я могу это реализовать? –
Я не думал об этом подробно, но вы могли бы добавить unmapped свойство, называемое «предупреждения» каждому типу entityType, и заполнить его на сервере во время сохранения при возникновении предупреждения. Затем это также будет отправлено клиенту, и сохранение завершится нормально. –
Отличная идея, не отображаемые свойства возвращаются и отображаются клиентом бриза. Затем я могу получить предупреждения. –