Имейте веб-API, делающий crud, и интерфейс mvc. Во внешнем контроллере это код редактирования для jqgrid:
[HttpPost]
public JsonResult EditRecipientActivity(RecipientActivity model)
{
var result = HttpStatusCode.BadRequest;
if (ModelState.IsValid)
{
if (model.ActCount > 0)
{
var response = repo.SaveUpdatedRecipientActivity(model);
if (!response.IsSuccessStatusCode)
{
result = HttpStatusCode.BadRequest;
}
else
{
result = HttpStatusCode.OK;
}
return Json(result, JsonRequestBehavior.AllowGet);
}
else
{
var response = repo.AddRecipientActivity(model);
return Json(response.IsSuccessStatusCode, JsonRequestBehavior.AllowGet);
}
}
return Json(false, JsonRequestBehavior.AllowGet);
}
Я пытаюсь передать ошибку сервера из веб-API в jqgrid, поэтому сообщение появляется в форме редактирования.
С помощью этого кода я могу отправить только код состояния в форму, но фактический статус в заголовке равен 200, даже если контроллер возвращает 400. Как мне передать фактический код состояния в форму?
РЕДАКТИРОВАТЬ: Изменен метод контроллера. Я не могу использовать Request.CreateResponse, я думаю, потому что это не контроллер API:
[HttpPost]
public HttpResponseMessage EditRecipientActivity(RecipientActivity model)
{
var response = repo.SaveUpdatedRecipientActivity(model);
return response;
}
Это результат, отправленный на веб-страницу:
StatusCode: 500, ReasonPhrase: 'Internal Server Error', версия: 1.1, Содержание: System.Net.Http.StreamContent, заголовки: {Pragma: нет-кэш X-исходников,??? = UTF-8 B QzpcX1ZTX1Byb2plY3RzXHRlc3RcU0ZBQVJfU1ZDXFNGQUFSX1NWQ1xyZWNpcGllbnRcdXBkYXRlYWN0aXZpdHlcMTIzMTIzMTIz = Persistent -Auth: true Cache-Control: no-cache Дата: среда, 02 сентября 2015 г., 16:44:13 GMT Сервер: Microsoft-IIS/8.0 X-AspNet-Version: 4.0.30319 X-Powered-By: ASP.NET Content -Длина: 2378 Content-Type: application/json; charset=utf-8 Срок действия: -1 }
Это то, на что я надеялся, но это не вызвало сообщение об ошибке jqGrid. Есть идеи, почему?
РЕДАКТИРОВАТЬ 2: Вот код navGrid:
$("#activity-grid").jqGrid('navGrid', '#grid-pager',
{ edit: true, add: true, del: false, search: true, refresh: true },
{ //edit parameters
editData: { FV: fv, RecipKey: recipientId },
beforeShowForm: function (form) { $("#tr_ActCount", form).hide(); }, // Hides the ActCount field from the modal form
closeAfterEdit: true
},
{ //add parameters
editData: { FV: fv, ActCount: 0 },
beforeShowForm: function (form) { $("#tr_ActCount", form).hide(); }, // Hides the ActCount field from the modal form
closeAfterEdit: true
}