在actionlink之前保持当前页面的更改

时间:2013-07-29 17:23:59

标签: asp.net-mvc asp.net-mvc-4 razor

好吧,伙计们,这可能是一个愚蠢的问题,我无法搜索任何相关问题,也许这不是问题

代表。我在我的mvc 4应用程序中有一个导航菜单,如下所示

  • @Html.ActionLink("Driver", "Index", "Driver")
  • @Html.ActionLink("Vehicle", "Index", "Vehicle")
  • 驱动程序控制器索引中的

    获取我从数据库中获取模型并在视图中显示所有内容,用户在没有提交的情况下进行更改,然后单击菜单操作链接转到“车辆”页面,然后再次返回“驱动程序”页面。

    我想要的是在驱动程序索引页面中我可以保留最后的更改并显示它,但在驱动程序控制索引GET中我必须从数据库中获取所有内容,因为我没有发布以保存最后一次更改为tempdata。 / p>

    任何想法?非常感谢你

    更新:非常感谢菲利普的答案,但仍然有点问题。 因为ActionLink发生在$(window).unload之前,如果我在jQuery中将一个帖子发送到服务器,则回发将失去方向。

    1 个答案:

    答案 0 :(得分:0)

    我会尝试捕获onbeforeunload事件并检查用户是否对模型进行了修改。

    如果有更改,您可以将这些更改保存在浏览器local or session storage(HTML5)中,或将它们发布到服务器(Web服务)。

    在下次重新加载页面时,您必须检查存储或向服务器询问模型。

    (function ($) {
        var isDirty = false;
    
        $(function(){
            // check local/session storage OR fetch data from server.
        });
    
        $(':input').change(function () {
            isDirty = true;
        });
    
        $(window).unload(function () {
            if (isDirty) {
                // store changes in local/session storage OR post them to the server.
            }
        });
    }(jQuery));