Поведение при отправке формы по умолчанию отличается между MVC2 и MVC3 - PullRequest
0 голосов
/ 27 июня 2011

В MVC2, если бы у меня было текстовое поле и кнопка отправки (подключенная к вызову javascript / ajax) внутри формы, нажатие клавиши ввода автоматически включило бы метод javascript кнопки отправки. Однако в MVC3 Razor нажатие клавиши ввода отправляет форму, а не выполняет запрос Ajax. Есть ли какая-либо причина для разницы между MVC2 и Razor?

РЕДАКТИРОВАТЬ: в основном, когда я нажимаю Enter, я получаю диалоговое окно File Save As, и когда я сохраняю файл и открываю его, содержимое файла имеет строку ответа.

1 Ответ

0 голосов
/ 27 июня 2011

Если вы используете какой-либо из помощников Ajax.* (например, Ajax.BeginForm или Ajax.ActionLink), вам необходимо удалить все сценарии Microsoft*.js и заменить их на: jquery.unobtrusive-ajax.js, например:

<script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>

Причина в том, что, взглянув на ASP.NET MVC 3, Microsoft поняла, что переосмысливать колесо никогда не бывает хорошо, и устарела в своих библиотеках сценариев MsAjax в пользу гораздо более совершенной и лучшей библиотеки jQuery. Таким образом, эти сценарии больше не используются (они просто предназначены для обратной совместимости). Помощники ASP.NET MVC 3 Ajax.* используют атрибуты данных data5 * HTML5, которые ненавязчиво AJAXified с jQuery.

Также вы должны убедиться, что ненавязчивый AJAX включен в вашем web.config:

<appSettings>
    ...
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>

Если вам все еще нужна обратная совместимость или что-то еще, вы можете установить для свойства UnobtrusiveJavaScriptEnabled значение false, и это откатится к предыдущим библиотекам Microsoft*.js (абсолютно не рекомендуется).

То же самое относится и к проверке JavaScript на стороне клиента: плагин jquery.validate используется по умолчанию с ненавязчивыми атрибутами данных data5 * HTML *, сгенерированными в полях ввода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...