MVC asp.net: отправить несколько форм - PullRequest
5 голосов
/ 20 января 2009

Когда я отправляю одну форму из представления, как я могу также читать или иметь контроллер для чтения данных в другой форме на той же странице?

Ответы [ 4 ]

10 голосов
/ 20 января 2009

Когда вы отправляете форму через браузер, она отправляет данные только для полей в этом . Это верно независимо от используемой вами серверной технологии, будь то ASP.net, MVC.net, PHP, Python и т. Д.

Единственные два варианта, о которых я могу подумать:

  1. Делайте как WebForms и просто помещайте по всей странице, а затем сортируйте результаты в зависимости от того, какая кнопка нажата.
  2. Используйте Javascript / AJAX для сбора любых данных, которые вам нравятся, и отправляйте их любым удобным вам способом. Вы даже можете сделать это в режиме реального времени (например, когда флажок установлен) и не вызывать обратную передачу страницы.

Конечно, у каждого есть свои плюсы и минусы, но такова природа зверя.

2 голосов
/ 20 января 2009

Вы можете сделать это на стороне клиента с помощью комбинации Ajax и Javascript ...

<SCRIPT language="JavaScript">
function submitforms()
{
        new Ajax.Request(formUrl,
        {
            parameters: $H({param1:value,param2:value}).toQueryString(),
            method: 'post',
            onSuccess: function(transport) {
               document.myform.submit();
            }
        }
}
</SCRIPT> 
1 голос
/ 20 января 2009

Вы не можете. Если у вас есть информация на странице, которую вы хотите отправить, вы должны включить ее в отправленную форму. Вы можете использовать JavaScript для копирования информации из одной формы в другую при отправке.

0 голосов
/ 26 сентября 2015
        var formData1 = $("#form1").serializeObject();
        var formData2 = $("#form2").serializeObject();
        $.extend(formData1, formData2);
        var formData = JSON.stringify(formData1);

        $.ajax({
            type: "POST",
            url: "@Url.Action("MyAction", "MyController")",
            data: formData,
            dataType: "json",
            contentType: 'application/json; charset=utf-8',
            success: function (data) {
                ...Do something with the data
            },
            error: function(result) {
                ...Handle the error
            }
        });

Затем на стороне вашего контроллера (я использую MVC, но WebAPI, вероятно, будет работать одинаково), вы можете объявить два отдельных параметра, которые соответствуют вашим моделям на стороне клиента, и все будет у вас разобрано, если вы не Имена свойств не совпадают! Должен любить это, когда волшебство случается!

public ActionResult MyAction(FormDataModel1 formData1, FormDataModel2 formData2)

Кредит https://github.com/macek/jquery-serialize-object для кода serializeObject.

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