Подтверждение формы с Razor, Url.Action

0

Я могу найти много разных способов добавить подтверждение к отправке формы. Проблема в моем случае заключается либо в том, что они представляют форму в любом случае, либо просто сидят и не делают ничего. Мы ценим любые предложения. Я добавил события как к форме onsubmit, так и к кнопке onclick, без костей. ActionResult в этом случае использует HttpPostRequest для отправки данных формы. Отлично работает, просто хочу добавить диалог подтверждения, который работает.

<script>

function SubmitConfirm(){
    if (confirm("Are you sure want to submit this form?"))
        return true;
    else
        return false;     
}

  <form name="Form1" method="post" action="@Url.Action("PostForm", "MyController")"  id="Form1">
...

<input type="submit" value="Submit Posting" onclick="SubmitConfirm()" />
Теги:
razor
forms
asp.net-mvc

1 ответ

1
Лучший ответ

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

<form name="Form1" id="Form1">
    ...
     <input type="button" id="submit" value="Submit Posting" />
</form>

И используя jQuery, настройте ваш фактический submit таким образом...

$(document).ready(function () {
    $('#submit').click(function() { submit(); });
});

function submit() {
    if (SubmitConfirm())
    {
        var data = $('#Form1').serialize();

        $.post('MyController/PostForm', data, function(result) {
             if (result === 'success') {
                 // just using an alert here as a placeholder
                 alert('Your submission has been received!');
             }
        });
    }
}

Это означает, что в вашем контроллере у вас будет следующее...

[HttpPost]
public ActionResult PostForm([form arguments])
{
    var success = // deal with form results, return true if everything is ok

    return new Content(success ? "success" : "failure");
}

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

EDIT: Исправлена опечатка и модифицированная логика представления.

  • 0
    Спасибо за ответ. Есть небольшая опечатка, (SubmitConfirm ()), но также есть «красная черта смерти» в круглых скобках в «$ ('# Form1')». говоря "Ожидаемый:". Не уверен, как это исправить.
  • 0
    @ user116923, ок, обновил ответ. Пример того, как ваш контент должен сериализоваться, см. В jsfiddle.net/D2bA6 и убедитесь, что у вас есть атрибут name во всех ваших полях. По сути, фигурные скобки были не нужны, и просто чтобы избежать проблем с onclick и submit я заставляю вас прикрепить кнопку отправки к слушателю jQuery.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню