вернуть частичное представление после httpsost asp.net mvc - PullRequest
0 голосов
/ 21 мая 2019

Я создаю веб-приложение в asp.net mvc

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

теперь на HttpPost У меня есть условие if, которое выглядит ниже

if (string.IsNullOrEmpty(model.NewPassword))
{
    TempData["PMessage"] = CustomHelper.Translate("Please Enter new Password");
    return PartialView(model);
}

но мой основной URL-адрес меняется на это частичное представление, как показано ниже

http://localhost:8080/User/ResetPassword

здесь ResetPassword - мое частичное имя

мой частичный вид выглядит следующим образом

@(Html.BeginForm("ResetPassword", "User", FormMethod.Post))
{
<div class="modal-dialog modal-sm">
    <!-- Modal data-->
</div>
}

мой полный пост метод

[HttpPost]

public ActionResult ResetPassword(ResetPasswordModel model)
{
    if (string.IsNullOrEmpty(model.NewPassword))
    {
        TempData["PMessage"] = "Please Enter new Password";
        return PartialView(model);
    }
    //if success
    return RedirectToAction("Index");
}

как я могу это предотвратить, я просто хочу загрузить модальную, а не целую страницу,

какие тут могут быть исправления?

или я должен пройти проверку на стороне клиента?

Подробный поток страниц

вот так выглядит моя страница

My page

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

My modal

без ввода каких-либо данных, если пользователь нажимает кнопку ОК, был вызван метод post и страница перенаправляется на resetpassword.cshtml, как я возвращаю, как показано ниже

return PartialView(model);

что мне нужно сделать, если я хочу обновить модальное / частичное представление проверки на контроллере

1 Ответ

1 голос
/ 21 мая 2019

Вы делаете обычный HTTP-запрос, он используется для обработки обычных вызовов браузера (например, отправки форм) и возврата полных HTML-страниц клиенту.

В вашем случае вам нужно сделать ajax-запрос для обработки метода записи ResetPassword, чтобыизбегать перенаправления.

<!-- modal placeholder-->
<div id='myModal' class='modal fade in'>
    <div class="modal-dialog">
        <div class="modal-content">
            <div id='myModalContent'></div>
        </div>
    </div>
</div>

этот URL возвращает форму сброса и загружает ее в модальное содержимое

<a href="@Url.Action("Reset", "Account", new { class = "resetpassword" })" ></a>


$(function () {
            $(document).on("click", "a.resetpassword", function (e) {
                $('#myModalContent').load(this.href, function () {
                    $('#myModal').modal({
                        /*backdrop: 'static',*/
                        keyboard: true
                    }, 'show');
                    bindForm(this);
                });
                return false;
            });
        });

        function bindForm(dialog) {
            $('form', dialog).submit(function (e) {
                e.preventDefault();
                if ($('#resetFormId').valid()) {
                    $.ajax({
                        url: this.action,
                        type: this.method,
                        data: $(this).serialize(),
                        success: function (result) {
                            if (result.success) {
                                $('#myModal').modal('hide');
                            } else {
                                $('#myModalContent').html(result);
                                bindForm(dialog);
                            }
                        }
                    });
                }
                return false;
            });
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...