Во время работы с сеткой пользовательских интерфейсов Kendo для ASP.NET MVC я нахожу некоторое разочаровывающее поведение, которое я не могу понять или найти какую-либо информацию. У меня есть сетка, которая делает запрос kendoGrid.saveChanges()
серверу, который имеет некоторую проверку на стороне сервера. Если проверка на стороне серверов не удается, он возвращает следующий результат:MVC Ajax.error render Partial View
Response.StatusCode = HTTP_BAD_CLIENT_REQUEST; // const int 400
return PartialView("Error/BadRequest");
Частичный вид просто имеет некоторую базовую HTML для отображения информации об ошибках пользователя, и ошибка DataSource обратного вызова сетки в выполняете следующих действий:
function errorCallback(e) {
// Handles explicit Ajax and Kendo DataSource error callbacks
var content = e.responseText || e.xhr.responseText;
// Wrapper around a kendo.ui.Window to display content
Core.Alert.raiseAlert(content);
}
Когда я запускаю проект в режиме отладки или публикую версию версии проекта на моем локальном компьютере, значение e.xhr.responseText
заполняется правильно, то есть содержит HTML-сообщение частичного представления. Однако, как только я переведу это на производственный сервер, e.xhr.responseText
просто содержит значение "Bad Request"
, которое также является кодом статуса HTTP, который я использую в настоящее время. Я пробовал использовать другие коды состояния, но результат тот же (имя ошибки используется как responseText).
Причина, по которой я нахожу это настолько странным, что я делаю что-то подобное в другом проекте для внутреннего применения в нашей компании, и это работает отлично. Они работают на тех же версиях и инструментах как Kendo, так и ASP.NET.
Может ли кто-нибудь указать мне прямо из инструментов или документации, Kendo или AJAX, которые объясняют, почему текст ответа не использует мой частичный результат обзора или как я могу сопоставить результат частичного представления? Я отправляю в свойство xhr.responseText
?
Редактировать: При попытке использования различных кодов ошибок я обнаружил, что некоторые коды состояния, такие как 405 (не разрешено), приводили к возврату html-ошибки сервера IIS. Итак, теперь я действительно тупик, почему некоторые статусные коды просто возвращают имя запроса, в то время как другие возвращают шаблонный HTML для этого кода ошибки, когда я указываю возвращаемое значение и представление для возврата?