Замените элемент FORM на что-то другое или удалите его, сохранив все дочерние элементы - PullRequest
0 голосов
/ 07 октября 2010

Я интегрировал Asp.net MVC с сайтом Sharepoint.Работает отлично.Но я также использую главную страницу Sharepoint по умолчанию (а именно ~masterurl/default.master).проблема в том, что эта конкретная главная страница имеет целую страницу, обернутую в элемент form, в то время как все страницы Sharepoint являются обычными страницами Asp.net WebForm.

Мой контент MVC должен иметь свой собственный form и входэлементы, которые я хотел бы представить на сервер.Ajax-вызовы, очевидно, не , что проблематично.Я не могу использовать $("form").serializeArray(), если сохраню оригинальный элемент form.Но тем не менее нормальные обратные передачи проблематичны, так как есть функции WebForm для отправки событий, и они будут отправлять слишком много данных на сервер.

Я буду использовать обычные обратные передачи, а также обратные передачи Ajax. Основная проблема - обычные обратные передачи.

Так что у меня есть две возможности, которые должны работать на $(document).ready():

  1. Удалить элемент формы и сохранить все остальное содержимое как есть.В jQuery это, вероятно, будет означать добавление элемента form к div, перемещение его содержимого в этот div и затем удаление form.
  2. . Непосредственно измените элемент form на div.Это, вероятно, будет быстрее с точки зрения обработки в браузере, но я не знаю, как это сделать.

Так что, если кто-то может разработать решение для 2. и предоставить некоторую информацию об этих двух возможных решениях: что нужно сделать и почему.

Редактировать

Есть и третий вариант.Я мог бы просто создать свои элементы ввода как необходимые, но заключить их в элемент div.Когда пользователь захочет отправить мою форму (div не является формой в любом случае), я мог бы:

  1. динамически вызвать $("div.form").serializeArray()
  2. создать формуэлемент
  3. заполнить его сериализованными значениями
  4. добавить форму к телу
  5. отправить.

Кажется утомительным, но это может сработать.Тем не менее, первые два решения кажутся более простыми.

1 Ответ

1 голос
/ 07 октября 2010

Если вы отправляете через $.ajax(), я бы просто пошел с .serialize() элементов напрямую, например:

$.ajax({
  url: "Path/Action",
  type: "post",
  data: $("#someContainer :input").serialize(),
  success: function(data) {
    //do something
  }
});

Или более короткая версия $.post():

$.post("Path/Action", $("#someContainer :input").serialize(), function(data) {
  //do something
});

Для этого не требуется генерация <form> или другие хитрости, просто обычный пост jQuery AJAX (или GET, что угоднотребуется).

...