如何在视图中保存用户输入内容,并在离开页面时对控制器进行后期调用

How do I save user input content in the view and do a post call to the controller when navigate away from page, silently

本文关键字:控制器 调用 离开 保存 视图 用户 输入      更新时间:2023-09-26

所以标题说明了我想要实现的目标。以下是我正在使用的内容:

Microsoft MVC4Razor查看

Model
class Model1
{
    public string var1 {get; set;}
    public bool ExitPage {get; set;}
}

视图是cshtml,看起来像这样:

@using Models
@model Model1
@using (Html.BeginForm())
{
    bool notFromSubmit = false;
    @Html.HiddenFor(x => x.ExitPage)
    @Html.Hidden("ExitPage", Model.ExitPage)
    Model.ExitPage = false;
    <article class="widget widgetFullPage" data-role="collapsible" data-collapsed="true">
        <h2 id="contactDetails">GENERAL INFORMATION</h2>
        <table>
            <tr id="Row1" style="background-color: #FFFFFF;">
                <td style="width: 200px; padding-bottom: 10px; padding-left: 30px; padding-top: 20px"><label>Var1</label></td>
                <td id="var1Id" style="padding-bottom: 10px; padding-top: 20px; width: 300px">
                    @Html.TextBoxFor(x => x.var1, null, new { style = "width:100px;" })
                </td>
                <td style="width: 250px; padding-top: 20px;"></td>
            </tr>
            <tr id="Row2">
                <td></td>
                <td></td>
                <td style="float: right; vertical-align: top; padding-right: 30px; padding-bottom: 20px">
                    <input value=" " class="nextbutton loading" type="submit" id="NextButton" />
                </td>
            </tr>
        </table>
    </article>
}
<script type="text/javascript">
    $("#NextButton").on('click', function () {
        if (window.notFromSubmit) {
            document.getElementById('ExitPage').value = true;
        } else {
            document.getElementById('ExitPage').value = false;
        }
    });
    $(document).ready(function() {
        window.onbeforeunload = function () {
           if (window.event) {
               window.notFromSubmit = true;
               $("#CaseManagementNextButton").click();
           }
           return null;
        };
    });
</script>

我在这里试图实现的是,当按下下一个按钮时,它会用保存来返回帖子,控制器会将用户重定向到下一个页面。其中,当用户导航离开/关闭页面时,它将在模型上设置ExitPage变量,以便控制器只保存并退出。

这基本上是有效的,只是我必须安静地做这件事(没有弹出对话框)。但是,使用"onbeforeunload"事件。即使返回null,它仍然会弹出一个确认框,并希望让用户选择留下还是离开。有没有一种方法可以不弹出对话框,只执行离开操作,然后仍然触发下一个按钮上的单击事件?当我注释掉返回时,它不会弹出对话框,但也不会执行nextbutton click事件。

任何帮助都将不胜感激。

添加onblur="myFunction(),然后对控制器进行异步调用。