【发布时间】:2015-07-23 10:40:03
【问题描述】:
我有 mvc 应用程序。
我想在没有查询字符串参数的情况下从客户端实现重定向。 假设我是页面http://localhost/weapp/details,从这个页面我打开打开并设置开始日期、结束日期和用户ID。这个弹出窗口也有 Go 按钮,当我点击 Go 按钮页面应该重定向 到像http://localhost/weapp/userproduectlist 这样的页面,网格按开始日期、结束日期和用户ID 中选择的参数过滤。
我正在使用以下代码来执行此操作。那么如何在没有查询字符串参数的情况下实现重定向。
var start = new Date($('#dtuStartDate').data("kendoDatePicker").value());
var end = new Date($('#dtuEndDate').data("kendoDatePicker").value());
$.ajax({
url:'@Url.Action("Alluserproduectlist","Users")',
type: 'POST',
data: { startDate: kendo.toString(start, 'dd-MMM-yy hh:mm:ss tt'), endDate: kendo.toString(end, 'dd-MMM-yy hh:mm:ss tt'), userid: $("#drpuser").data("kendoMultiSelect")._values.join() },
success: function(data)
{
}
});
});
那么如何在没有查询字符串的情况下在 mvc 应用程序中使用选定参数从一个客户端重定向到另一个操作,以便下一页根据上一页中选定的参数加载数据?
【问题讨论】:
-
我来宾,您可以尝试使用 cookie。在第一页设置 cookie 值(startDate、endDate、userId),然后在第二页读取它们。
-
进行正常提交(发布值)并在 POST 方法中保存值(例如 TempData、Session 等)然后重定向到 GET 方法,并在 GET 方法中读取值(如果您的意图是重定向,那么无论如何使用 ajax 都是毫无意义的)
-
我建议如果你只是想在客户端做而不使用查询字符串,你可能想停止重定向,留在同一页面,处理来自两个控制器的所有组合代码在单个控制器中并使用一些 JavaScript 一个接一个地显示所需的数据(取决于用户操作)并保存重定向。每次您需要新数据时,只需 AJAX 即可。
-
@StephenMuecke- 但在客户端使用javascript重定向到localhost/weapp/userproduectlist。请参考我附加的javascript代码。请也对此提出建议。
-
@skiskd,您当前的脚本是一个 ajax 帖子,它保持在同一页面上。如果你想重定向,那么做一个正常的提交和 RedirectToAction - 使用 ajax 是没有意义的。如果您不希望参数出现在 url 中(为什么不呢?),那么您需要将它们保存在某个地方,以便可以从
userproduectlist()GET 方法中读取它们。但是由于生成视图所需的值不在查询字符串中,如果用户刷新视图它会失败,并且用户浏览器历史不会有意义 - 所以很难理解你为什么要这样做