переход с Microsoft Ajax.BeginForm на JQuery - PullRequest
6 голосов
/ 28 февраля 2010

Я постепенно перешел от microssoft AJAX к JQuery для всего моего AJAX. единственное, что я оставил, - это некоторые формы, которые публикуются с помощью Microsoft AJAX с помощью AJAX.Beingform. Это сайт asp.net mvc, поэтому submit должен вызывать действие поста контроллера.

Какой самый простой способ преобразовать это в jquery, чтобы я мог удалить свою ссылку на Microsoft AJAX.

Ответы [ 4 ]

7 голосов
/ 28 февраля 2010

Вероятно, проще всего использовать плагин jQuery Form для достижения большей части этой функциональности, если у вас есть форма, которая выглядит следующим образом: -

<%= Ajax.Form(new AjaxOptions {
         Url = theUrl,
         Method = theMethod,
         Confirm = confirmFunction, 
         InsertionMode = InsertionMode.Before,
         OnBegin = onBegin,
         OnComplete = onComplete,
         OnFailure = onFailure,
         OnSuccess = onSuccess,
         UpdateTargetId = elementId,
         LoadingElementId = loadingElementId
         });

Это будет соответствовать вызову подключаемого модуля формы: -

$("#yourFormId").ajaxForm({
    url : theUrl,
    type : theMethod,
    beforeSubmit : confirmFunction,
    beforeSend : onBegin,
    complete : onComplete,
    success : onSuccess,
    error : onFailure
});

Единственными проблемами являются репликация свойств LoadingElementId, UpdateTargetId и InsertionMode.

Если вы хотите скопировать InsertionMode.Replace, вы можете передать дополнительный целевой параметр плагину ajaxForm. Если вы хотите скопировать оставшуюся функциональность, вам придется написать свои собственные обработчики событий beforeSend, success и complete.

Что-то вроде следующего будет имитировать форму с InsertionMode.Before, UpdateTargetId = "Test", LoadingElementId = "Loader": -

$("#yourFormId").ajaxForm({
     beforeSend : function() { $("#Loader").show(); },
     complete : function() { $("#Loader").hide(); },
     success: function(result) { $(result).prependTo("#Test"); }
});
3 голосов
/ 28 февраля 2010
  1. Загрузите и включите плагин jquery .
  2. Заменить Ajax.BeginForm на Html.BeginForm
  3. Зарегистрировать форму:

    $(function() {
        $('#formId').ajaxForm();
    });
    
  4. Используйте обратный вызов успеха, чтобы обновить DOM после отправки формы. Этот шаг не является обязательным:

    $(function() {
        $('#formId').ajaxForm({
            success: function(data) {
                $('#someplaceholder').html(data);
            }
        });
    });
    
0 голосов
/ 28 февраля 2010

Вы можете изменить поведение отправки форм с помощью jQuery.

Пример:

$("#your-form").submit(function() {
    $.post($(this).action, function(data) {
        //do something with the data
    });

  return false;
  //make sure you return false so the form won't be posted regularly
});
0 голосов
/ 28 февраля 2010

submit должен вызывать действие поста контроллера.

Вы можете просто сделать то же самое, используя обычный JavaScript ...

если добавить ссылку Кнопка

<asp:LinkButton runat="server" id="lnkAddOrder" 
    Text="Add Order" onclick="lnkAddOrder_Click" />

вы можете видеть в Preview браузера, когда вы над кнопкой ссылки, в левом нижнем углу браузера, он будет вызывать метод javascript.

просто используйте этот метод в своих вызовах!

__doPostBack( [Control ID], [Arguments] );

пример страницы:

http://pastebin.com/JaN9ngH9


1024 * Отредактированный *

Извините, только теперь я вижу MVC, его там не было, когда я его читал, или я просто ошибочно предположил: - /

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