【问题标题】:return partialview after httppost asp.net mvc在 httppost asp.net mvc 之后返回部分视图
【发布时间】:2019-05-21 07:28:31
【问题描述】:

我正在asp.net mvc创建一个网络应用程序

我有一个部分视图来重置密码,它在引导模式中打开,

现在在 HttpPost 我有一个如下所示的 if 条件

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

但我的主要网址正在更改为如下所示的部分视图

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");
}

如何防止这种情况,我只想加载模态而不是整个页面,

这里有什么修复方法?

或者我应该去客户端验证吗?

页面流程详解

这就是我的页面的样子

如果用户点击重置密码,会出现下面的引导模式

如果用户单击“确定”而不输入任何数据,则已调用 post 方法并且页面被重定向到 resetpassword.cshtml,因为我正在返回,如下所示

return PartialView(model);

如果我只想刷新控制器上验证的模态/部分视图,我需要做什么

【问题讨论】:

  • 又更新了..
  • 更新了我的问题希望,它可以帮助您了解我想要做什么
  • 我认为您应该阻止提交重置表单。您可以使用 AJAX 请求收集表单数据并发布。请求完成后,您可以使用部分视图内容刷新模式或重定向到索引页面。

标签: asp.net-mvc bootstrap-modal partial-views


【解决方案1】:

您正在发出正常的 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>

此网址返回您的重置表单并将其加载到模态内容中

<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;
            });
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多