【问题标题】:How to redirect user from client side?如何从客户端重定向用户?
【发布时间】: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 方法中读取它们。但是由于生成视图所需的值不在查询字符串中,如果用户刷新视图它会失败,并且用户浏览器历史不会有意义 - 所以很难理解你为什么要这样做

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


【解决方案1】:

您可以使用带有提交按钮的表单(在您的情况下为 GO)

 @using (Html.BeginForm("Alluserproduectlist", "Users", FormMethod.Post))
{
    //set startdate, enddate and userid .
    
    <input type="submit" value="GO"/>
 
}
如果您没有显示表单,则将值传递给 具有上述重载的表单中的隐藏表单字段并调用 jquery $('#myHiddenForm').submit();点击 go 按钮。

【讨论】:

    【解决方案2】:

    在您的操作方法中,您可以像这样返回 JSON:

    return Json(new { newLocation = "/Home/Index/" });
    

    您也可以传递额外的信息作为结果,然后在客户端:

    success: function(data)
    {
        window.location = data.newLocation
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-15
      相关资源
      最近更新 更多