MVC - 在LayOut控制器之前在站点控制器上捕获导航请求

时间:2015-05-05 06:45:13

标签: c# asp.net-mvc asp.net-mvc-4

在我的公司,我们正在讨论是否在MVC中制作我们的下一个Web应用程序。 我被指控弄清楚一些基本的东西可以阻止我们死在我们的轨道上,所以花了一些时间来尽可能地找出MVC平台。

然而,有一件事我想知道,是否可能,如果是这样的话 - 在_LayOut页面/控制器上制作一个菜单,当用户按下菜单导航时,我能够在之前的特定页面上捕获它会进入布局控制器吗?

更新 我忘了提及我希望能够根据我所在的网站保存表单。所以我可能有10页不同的表格,根据我在哪一个,我必须使用菜单中的相同链接将表格保存在该页面上。

我的解释可能很快就会生病,很快就描述了这种情况,也许有另一种方法可以做到这一点。

用户在页面上填写了大量数据,然后按导航菜单转到新页面,我想在导航到下一页之前保存输入的数据。

抱歉我的英语不好,这不是我的主要语言。 提前感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

执行您正在寻找的内容的方法是附加客户端事件处理程序,该处理程序在导航到新页面之前提交数据。它看起来像这样:

$(".navigation a").click(function (event) {
    // Get form data, process it and POST/PUT/DELETE
});

如果您支持现代浏览器,那么您可以订阅表单的输入事件,并在表单中的任何内容发生更改后自行附加到表单上,如其中一条评论中所建议的那样。如果您需要支持旧浏览器以及订阅表单中输入字段的change事件,以便附加beforeunload的处理程序。

form.oninput = function () {
    window.onbeforeunload = submitFormData;
};

function submitFormData() {
    // Gather and submit your data
}