Как использовать плагин формы jquery с asp.net? - PullRequest
7 голосов
/ 18 декабря 2008

в asp.net 2.0 (не mvc), действие формы само по себе. Как я могу использовать плагин формы для отправки информации на сервер? Мне нужно отправить данные из формы (скажем, имя, адрес электронной почты, комментарий) и отобразить результат на стороне клиента. Есть идеи?

Спасибо, Dave

Ответы [ 7 ]

4 голосов
/ 19 декабря 2008

мс аякс? если я использую панель обновления, мне не нужно jquery. я хочу использовать только jquery и плагин формы (плюс плагин проверки). Нет, Microsoft Ajax для меня, спасибо! просто посмотрите на трафик, который они производят в firebug, чтобы понять почему.

3 голосов
/ 20 декабря 2008

Это зависит от того, сколько asp.net вы хотите использовать при отправке формы. Я использую плагин форм таким же образом, но вы должны думать о более классической веб-модели.

Плагин форм выполняет «отправку», которая не содержит никакой информации о состоянии просмотра. То есть, если вы попытаетесь получить значение, подобное

sName = txtName.text

текст для txtName будет пустым. Но если вы используете объект запроса, вы сможете получить значение обратно, если вы знаете уникальный идентификатор элемента управления

sName = Request.Form (txtName.UniqueID)

Тогда я бы использовал успех плагина формы: обратный вызов для запуска вызова ajax, который отзовет ваши результаты. Для этого вы можете использовать ms ajax WebMethods, и вы можете вызывать веб-методы напрямую из jquery без необходимости в менеджере сценариев ms. В этом случае WebMethod возвращает HTML, который я хочу отобразить на странице.

$(form).ajaxSubmit(function(){
   success:function(ret){
     $.ajax({
       type: "POST",
       contentType: "application/json; charset=utf-8",
       dataType: "json",
       data: "{}",
       url: "SomePage.aspx/SomeWebMethod",
       success: function(msg){
         $('#somediv').html(msg); 
       }
   }
});

Дополнительная информация о вызове ms ajax с помощью jquery здесь

1 голос
/ 18 мая 2011

Я столкнулся с этой проблемой сегодня и в конце концов решил ее, используя следующую комбинацию хаков:

Предположим, у вас есть страница поиска и страница результатов, а на странице поиска есть форма, которую вы хотите опубликовать на странице результатов и загрузить через ajax с помощью плагина jquery forms. Вам необходимо сделать следующее:

  1. Создание страницы Search.aspx и страницы Results.aspx

  2. Страницы веб-формы ASP.NET имеют одну форму на странице с идентификатором aspnetForm и идентификатором, но действие всегда будет настроено на отправку сообщения самому себе, поэтому первое, что вам нужно сделать при загрузке Search.aspx страница должна изменить действие aspnetForm на Results.aspx следующим образом:

    $ ('# aspnetForm'). Attr ('action', 'Results.aspx');

  3. Затем вам нужно работать с viewstate, чтобы при выполнении POST из Search.aspx в Results.aspx вы не получали недопустимых ошибок viewstate. Для этого просто удалите переменную viewstate со страницы следующим образом:

    $ ( '#__ VIEWSTATE') удалить ();.

  4. тогда вы сможете настроить #aspnetForm для использования плагина jquery forms следующим образом:

    $ ( '# aspnetForm') ajaxForm ().

Затем вы можете публиковать в веб-форме Results.aspx. Это только начало, чтобы вы пошли в правильном направлении, но в основном это сводится к необходимости изменить действие, которое отправляет форма aspnet, а затем удалить viewstate.

1 голос
/ 19 декабря 2008

В настоящее время я использую сочетание asp.net и jquery и способ, которым я решил проблемы с жизненным циклом страницы, и просто не использую кнопки autopostbacks и asp.net для отправки формы.

Я использую либо вызовы ajax, присоединенные к простым кнопкам HTML, либо, когда я действительно хочу отправить всю страницу, я использую функцию javascript __doPostBack (eventTarget, eventArgument).

Эти статьи были мне полезны:

1 голос
/ 19 декабря 2008

Из-за того, что viewstate тесно связано с формой в ASP.NET, если вы не настроили службу для приема запроса, я не уверен, будет ли это возможно. Если вы не хотите использовать viewstate, вы можете просто использовать обычную HTML-форму на странице aspx и отправить ее в службу, которая возвращает ожидаемые результаты.

Когда вы отправляете форму asp.net для обратной передачи, она отправляет все обратно через жизненный цикл страницы, я не думаю, что на самом деле есть что-то, с чем можно связаться с ajax-запросом jQuery. Вы можете настроить WebMethod на странице, которая, по сути, предоставляет сервис, и вы можете получить запрос jQuery, чтобы поговорить об этом, но я не уверен, что он будет работать.

Однако вы можете использовать ASP.NET AJAX с библиотеками MS, не используя UpdatePanels, см. Эту статью , чтобы ознакомиться с кратким изложением того, что вы можете делать с WebMethods и библиотеками javascript ajax

0 голосов
/ 01 апреля 2009

Это не работает, так как ASP.NET заставляет вас помещать все в форму сервера, пока вы используете управление сервером (именно так он обрабатывает обратную передачу). Основная проблема, с которой вы столкнетесь, заключается в том, что HTML все равно не разрешает вложенную форму, поэтому вы даже не можете использовать jQuery для поиска элемента формы (это мой опыт работы с FF3)

Хороший ответ (но трудно достичь) - выбросить WebForm и использовать MVC.

Обходной путь для компромисса - я сам создал небольшой плагин, который преобразует div в ajax submit с использованием div с методом method = "post" и action = "url", затем использует плагин формы jQuery для сериализации, отправки шаблон плагинов. Это не делает File Upload, хотя (поскольку для этого требуется IFrame, я думаю, что это все еще возможно, но потребуется еще немного взломать). Код находится в проекте моего клиента, поэтому у меня все еще нет разрешения публиковать его как плагин. Однако я думаю, что это не так уж сложно сделать, если вы знаете теорию:)

Действительно, в следующий раз стремитесь к хорошему ответу (избавьтесь от WebForm). Это не просто форма jQuery, которая причинит вам боль, вам придется испытать гораздо больше боли, если вы решите использовать jQuery + Web Form, если это не требование моего клиента, я бы никогда не пошел по этому пути.

0 голосов
/ 19 декабря 2008

Не похоже, что VS08 работает для вас, но другие могут быть заинтересованы: Я пошел на Roadshow MSDN на днях, который, казалось, сделал это очень легко. Блог Скотта Гу имеет это: http://weblogs.asp.net/scottgu/archive/2008/11/21/jquery-intellisense-in-vs-2008.aspx

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