2016-08-02 2 views
1

В мой контроллер, я поставил чек:Свободная проверка: как настроить формат сообщения о плохом запросе?

if (!ModelState.IsValid) 
{ 
    return BadRequest(ModelState); 
} 

Это дает мне ошибку специфичный формат, например:

{ 
    "Message": "The request is invalid.", 
    "ModelState": { 
    "stocks.SellerType": [ 
     "SellerType should be greater than 101" 
    ], 
    "stocks.SourceId": [ 
     "SourceId should be less than 300" 
    ] 
    } 
} 

Как настроить этот формат сообщения об ошибке. Я знаю, как настраивать сообщения об ошибках, т. Е. «SourceId должен быть меньше 300». Но я понятия не имею, как я могу изменить «Сообщение», удалить или переименовать поле json «ModelState»?

+0

Обертка, которая вернет меньший ModelState, будет в порядке для вас? например: собственный пользовательский объект с сообщением (и другие поля, если необходимо) – meorfi

+0

да, я хочу свой собственный пользовательский объект. – maverick

+0

Где вы получаете эту ошибку, на 'controller'? –

ответ

1

Update: изменить сообщение по умолчанию и сохранить форматирование по умолчанию для ModelState ошибок, которые вы можете использовать HttpError класса:

if (!ModelState.IsValid) 
{ 
    return Content(HttpStatusCode.BadRequest, 
     new HttpError(ModelState, includeErrorDetail: true) 
     { 
      Message = "Custom mesage" 
     }); 
} 

Или вы можете определить свою собственную модель для результата проверки и вернуть его с требуемым кодом состояния (для переименования json-поля «ModelState»). Например:

class ValdationResult 
{ 
    public string Message { get; } 
    public HttpError Errors { get; } 

    public ValdationResult(string message, ModelStateDictionary modelState) 
    { 
     Message = message; 
     Errors = new HttpError(modelState, includeErrorDetail: true).ModelState; 
    } 
} 
... 

if (!ModelState.IsValid) 
{ 
    return Content(HttpStatusCode.BadRequest, 
     new ValdationResult("Custom mesage", ModelState)); 
} 
+0

Привет, Пробовал, и я получил уродливую сериализацию с k__BackingField? {"Сообщение": "Запрос недействителен.", "Ошибки": {"netMonthly": {"_ errors": [{" k__BackingField": null, " k__BackingField": "сообщение об ошибке"}], " k__BackingField": null}}} –

+0

@ LeszekRepie, вы правы. Это было просто пример возврата пользовательского ответа с кодом состояния «BadRequest». См. Обновленный ответ - форматирование по умолчанию будет сохранено. –

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