Я собираюсь предположить, что отсутствие кавычек вокруг селектора является просто ошибкой транскрипции, но вы все равно должны это проверить. Кроме того, я не вижу, где вы на самом деле даете форме идентификатор. Обычно вы делаете это с параметром htmlAttributes. Я не вижу, чтобы вы использовали подпись, которая имеет это. Опять же, если форма отправляется вообще, это может быть ошибкой транскрипции.
Если селектор и идентификатор не являются проблемой, я подозреваю, что это может быть связано с тем, что обработчик кликов добавляется через разметку при использовании расширения Ajax BeginForm. Вы можете попробовать использовать $ ('form'). Trigger ('submit') или, в худшем случае, заставить обработчик щелчка на привязке создать скрытую кнопку отправки в форме и щелкнуть ее. Или даже создайте свою собственную ajax-заявку, используя чистый jQuery (что, вероятно, я бы и сделал).
Наконец, вы должны понимать, что заменив кнопку отправки, вы полностью сломаете это для людей, у которых не включен JavaScript. Чтобы обойти это, нужно также скрыть кнопку с помощью тега noscript и обрабатывать как AJAX, так и не AJAX-сообщения на сервере.
Кстати, считается стандартной практикой, Microsoft не выдерживает, добавлять обработчики через javascript, а не через разметку. Это держит ваш javascript организованным в одном месте, чтобы вам было легче видеть, что происходит в форме. Вот пример того, как я бы использовал триггерный механизм.
$(function() {
$('form#ajaxForm').find('a.submit-link').click( function() {
$('form#ajaxForm').trigger('submit');
}).show();
}
<% using (Ajax.BeginForm("Update", "Description", new { id = Model.Id },
new AjaxOptions
{
UpdateTargetId = "DescriptionDiv",
HttpMethod = "post"
}, new { id = "ajaxForm" } )) {%>
Description:
<%= Html.TextBox("Description", Model.Description) %><br />
<a href="#" class="submit-link" style="display: none;">Save</a>
<noscript>
<input type="submit" value="Save" />
</noscript>
<% } %>