Session.Clear()和重定向问题

时间:2016-04-12 14:20:56

标签: c# session asp.net-mvc-5

我正在使用Predicate Builder来允许用户过滤数据库表并搜索他们在我的应用程序中需要/想要的特定记录。

现在,在合并pagingPredicate Builder时,我必须将用户的搜索存储在Session中,以便在搜索特定记录和搜索时返回的记录多于1页可以容纳的记录..然后他们将能够转到第2页并且仍然拥有与其查询匹配的记录。

现在,为了让他们搜索其他记录,他们将不得不清除该会话并开始一个新的...所以在我的 Index 页面上,用户可以搜索我创建了一个按钮,可以单击以清除其会话:

<input type="button" class="btn btn-primary top-margin" value="Clear Search" onclick="location.href='@Url.Action("ClearSearch", "DailySummaries", new { area = "" })'" />

在我的控制器中,这很简单:

public ActionResult ClearSearch()
{
    Session.Clear();
    return RedirectToAction("allDailySummaries");
}

但问题是..当用户点击该按钮时,它会将它们返回到初始页面。如何清除会话而不将其重定向回初始页面?

为了更好地解释..想象我在2016年4月1日到2016年12月4日期间搜索了所有每日摘要。现在我完成了那次搜索,我想搜索其他内容......我点击了“清除搜索”#39;按钮,但我想要它做的是清除会话并保持在当前所在的页面上..不清除会话,然后将我重定向回初始页面。

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

如果不了解更多实施细节,很难说。就个人而言,当我不得不解决这样的问题时,我倾向于回复我们的好朋友javascript。

基本上,我要遵循的过程是:

  1. 使用javascript向服务器创建发布请求以清除该用户会话(注意,我使用post而不是get,因为操作在服务器上有后果)
  2. 我要求网格通过请求我用来重新加载的javascript网格插件来重新加载第一页,或者如果我正在进行手动分页,则以编程方式单击第一个按钮。
  3. 你也应该考虑非javascript用户的优雅降级,在这种情况下,重定向可能是正确的方法。