Форма загрузки Jquery Ajax на веб-форме asp.net - PullRequest
0 голосов
/ 08 января 2010

Я загружаю, используя $ .load () страницу .aspx в div родительского .aspx, скажем так. Когда содержимое загружено, в код помещается новая форма внутри aspnetForm. Я делал это раньше очень похожим образом, но на этот раз кнопка отправки отправляет новую форму на страницу, загруженную ajax, а не родительскую страницу aspnetForm.

Edit: Подробнее

Когда пользователь выбирает набор элементов из списка, они загружаются ajax следующим образом:

$("#gvContacts").load("MailingContacts.aspx?ids="+$("#filters").val() + "&removedContacts=" + $("#removedContacts").val() + "&action=<%=Convert.ToInt16(this.Action) %>", function());

MailingContacts - веб-форма aspx с GridView внутри. Когда .load помещает HTML в div, он выглядит так:

<form id="form1" action="MailingContacts.aspx?ids=11&amp;removedContacts=&amp;action=2" method="post" name="form1">
<!-- GridView code -->

</form>

и по какой-то причине кнопка, которая отправляет страницу, использует эту новую форму вместо оригинальной aspnetForm.

Ответы [ 3 ]

4 голосов
/ 11 января 2010

Вам не разрешено иметь вложенные формы - если вы добавите новый набор тегов <form> в основную родительскую форму, вы окажетесь в мире боли.

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

Вы должны либо:

  1. Загрузка формы, созданной JavaScript, в <div> вне основного элемента управления формы ASP.NET (вам разрешено использовать несколько форм на странице, только не вложенные).
  2. Создайте свою основную форму таким образом, чтобы она могла обрабатывать содержимое формы MailingContacts и удаляла из нее теги формы.
  3. Вместо того, чтобы возвращать целую страницу HTML, включая GridView через AJAX, просто вернуть набор пользовательских данных и отобразить их в виде списка с помощью jQuery и т. Д. HTML.
0 голосов
/ 19 ноября 2011

Как добавить окно поиска IxQuick в теги формы, «вложенные» в теги формы asp.net, с функцией отправки.

Salve! У меня была похожая проблема. У меня была страница aspx, построенная на главной странице, которая содержала тег формы asp.net. Теперь я хотел найти окно поиска Ixquick на этой странице, но мне нужно было заключить его в теги формы, чтобы оно работало; но, конечно, у вас не может быть вложенных тегов формы на странице aspx.

Вот как я решил свою проблему:

Я создал всю строку поиска в jquery и добавил ее на страницу aspx, используя jquery для замены пустого div. Javascript запускается на клиенте после , когда сервер обслуживает свой код, таким образом обходя любую проблему с вложенными div-файлами. Это также позволяет избежать проблем с поведением отправки главной страницы для тега формы главной страницы. Вы получаете свой собственный тег формы в выводимом html и свое собственное поведение при отправке.

Поместите эти две строки на страницу aspx, где должно отображаться окно поиска.

<div id="search"></div>
<script type="text/javascript">AddSearchBox("#search");</script>

И в моем файле .js я добавил:

function AddSearchBox(where){
var SearchingForm = "<form id='metasearch' name='metasearch' method='POST' accept-charset=' UTF-8' action='javascript:SearchBarSubmit()' ><input name='keyword' type='text' size='32' id='searchbox' /><input type='submit' value='WebSearch'  id='searchbutton' /></form> "
$(where).html(SearchingForm);
return false;
}

function SearchBarSubmit(){
var searchquery = $('#searchbox').val();
location.href="http://ixquick.com/do/metasearch.pl?query=" + searchquery + "&cat=web&language=english&cmd=process_search&frm=sb&linkback_url=http://www.mywebsite.com&linkback_sitename=mySiteName";
return false;
}

Теперь, когда кто-нибудь вводит в мое окно поиска, он автоматически запускает поисковый запрос в IxQuick и отображает результаты - как в обычной HTML-форме. И что лучше, если у них не включен javascript, у них не будет сломанного окна поиска, потому что они вообще не получают окна поиска! Я не возражаю против этого, потому что я добавляю окно поиска ради того, чтобы быть изящным.

Если вы используете этот код, обязательно замените «www.mywebsite.com» на свой собственный веб-сайт и обязательно измените ссылку «mySiteName» на имя вашего веб-сайта.

0 голосов
/ 10 января 2010

Это потому, что свойство действия , установленное в теге формы, имеет значение, указывающее, куда отправлять ... в ASP.Net по умолчанию это URL-адрес страницы.

например. форма из моих текущих результатов проекта, как это:

<form name="aspnetForm" method="post" action="/Admin/Report/497" id="aspnetForm" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...