MVC - Ajax.BeginForm - отправка несколько раз - PullRequest
1 голос
/ 19 января 2012

Я создал контактную форму, модель состоит из простого ... Имя, адрес электронной почты, номер телефона и т. Д.

В модели у меня есть несколько простых обязательных атрибутов для некоторых свойств.

Все это прекрасно работает, когда не было ошибок проверки, я получаю электронное письмо с сообщением о том, что форма отправлена, и пользователю выводится милое небольшое сообщение "спасибо".

Моя проблема, когда проверка не проходит. Я получаю обычную красную рамку для текстовых полей и т. Д. Теперь, если пользователь обновляет текстовые поля в соответствии с требованиями проверки и снова отправляет документы, я получаю два электронных письма. Обе одинаковые детали в них. Однако, похоже, что во многих случаях вы не проходите проверку, а именно столько звонков (электронных писем) я получаю.

Я довольно новичок в MVC, так что, если бы вы могли указать мне правильное направление, это было бы здорово.

Приветствия

J

Форма:

using (Ajax.BeginForm("ProcessContact", "Contact", null, new AjaxOptions { UpdateTargetId = "subContentWrapper", }))
            {
            @Html.ValidationSummary()

            <p>
                <strong>Please tell us a little about you and the nature of your enquiry </strong>
            </p>
            <table>
                <tr>
                    <td style="width: 200px;">
                        Name:
                    </td>
                    <td>@Html.TextBoxFor(x => x.Name, new { @class = "textBox" })
                    </td>
                </tr>
                <tr>
                    <td>
                        Company Name:
                    </td>
                    <td>@Html.TextBoxFor(x => x.CompanyName, new { @class = "textBox" })
                    </td>
                </tr>
                <tr>
                    <td>
                        E-mail:
                    </td>
                    <td>@Html.TextBoxFor(x => x.Email, new { @class = "textBox" })
                    </td>
                </tr>
                <tr>
                    <td>
                        Phone:
                    </td>
                    <td>@Html.TextBoxFor(x => x.Phone, new { @class = "textBox" })
                    </td>
                </tr>
            </table>

            <br />
            <br />
            <p style="text-align: center">
                <input type="submit" value="Contact Us" /></p>
            }
        }

Код:

if (ModelState.IsValid)
        {
            if (ContactService.ProcessContactSubmission(model))
            {
                ViewBag.Sent = true;
            }
            else
            {
                ViewBag.Sent = false;
                ModelState.AddModelError("", "Sorry an error has occured, please try again later.");
            }
            return PartialView("~/Views/Modules/Contact Us/Main.cshtml", model);
        }
        else
        {
            ViewBag.Sent = false;
            return PartialView("~/Views/Modules/Contact Us/Main.cshtml", model);
        }

ContactService.ProcessContactSubmission (model) - это просто отправляет электронное письмо и возвращает true / false

Ответы [ 2 ]

0 голосов
/ 25 сентября 2015

Старая нить, но думал, что я брошу свои выводы в шляпу.

У меня было то же самое сегодня, когда я отправлял форму, используя кнопку отправки в форме ajax, и каждый раз, когда я отправлял ее, количество сообщений увеличивалось!

Проверив все, нет дубликатов ненавязчивых js-файлов и т. Д., Я просто изменил кнопку отправки на стандартный тег ввода, который вручную отправляет форму, и привет, только один пост!

<input type="button" value="Next" onclick="$('#formtosubmit').submit();" />

вместо

<input type="submit" value="Next" />

Надеюсь, что это помогает другим

0 голосов
/ 02 июля 2012

@ jamie, Можете ли вы проверить в firebug, если форма отправляется несколько раз или нет? Если возможно, опубликуйте также код ProcessContactSubmission. также я надеюсь, что если (ModelState.IsValid) не в цикле или что-то, если это так, пожалуйста, дайте нам знать, что

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