Дело в том, что AJAX использует кодировку UTF-8
при отправке запроса.Но вы настроили свой сервер на ожидание requestEncoding="iso-8859-15"
, из-за чего возникает расхождение.
Предположим, что в вашей форме есть поле ввода с именем Category
, и пользователь вводит в него символ ñ
.Если вы используете обычный Html.BeginForm
, то следующая полезная нагрузка POST-запроса будет отправлена на сервер:
Category=%F1
С другой стороны, если вы используете Ajax.BeginForm
, следующая полезная нагрузка POST следующего запроса будет отправлена насервер:
Category=%C3%B1&X-Requested-With=XMLHttpRequest
В этом случае сервер не может правильно декодировать этот запрос в кодировке UTF-8, так как ожидает, что запросы будут iso-8859-15
кодированы.
Таким образом, вы можете изменитьваш web.config для использования кодировки запросов и ответов UTF-8 для вашего сайта.Не могу придумать вескую причину в 2012 году использовать в веб-приложении любую другую кодировку, кроме UTF-8.
<globalization
enableClientBasedCulture="true"
uiCulture="auto"
culture="auto"
fileEncoding="utf-8"
requestEncoding="utf-8"
responseEncoding="utf-8"
/>
Также не забудьте обновить любые теги <meta>
, которые могут у вас быть вваши макеты, чтобы также использовать UTF-8
:
<meta charset="utf-8" />