我有3个asp.net页面:Search.aspx,Results.aspx和Login.aspx。 现在我希望匿名用户能够搜索,所以每个人都可以使用search.aspx。此页面调用
Server.Transfer(Results.aspx)
因此显示结果。现在,当用户未登录时,“结果”页面上会显示指向登录页面的链接。问题是: 登录后,我希望将用户自动重定向到“结果”页面。但是我没有成功,因为Login.aspx的PreviousPage属性始终为null。当我使用
时Request.UrlReferrer.LocalPath
它是Search.aspx的链接,但不是Results.aspx。 此外,当用户在“结果”页面上时,如何通过单击链接使他返回,并且Search.aspx上的所有搜索输入条件(如文本框中)仍然存在,以便他可以在完成搜索后优化搜索见过结果?每当我发回用户时,所有用户输入都会丢失。 我仍然没有弄清楚我是否应该使用普通超链接,链接按钮以及如何检索上一页网址或保留输入数据。
如果有任何帮助我可以使用AJAX,但首选“纯粹的”asp.net解决方案。
答案 0 :(得分:3)
当您执行Server.Transfer时,它是服务器端重定向...意味着客户端仍然可以看到原始URL。您需要将搜索条件发布到结果页面,将它们存储在本地,显示登录链接。登录后,您可以重定向到结果页面并重新水化搜索标准并显示结果。
答案 1 :(得分:1)
您可以使用User.Identity.IsAuthenticated来检查用户是否已登录并显示/隐藏登录按钮。
要保留页面的值,您可以将它们存储在Session中,然后让“搜索”页面查找它们,如果存在,则将它们放在控件中。
答案 2 :(得分:1)
尝试使用Response.Redirect(“url”)而不是Server.Transfer。当您使用Server.Transfer时,客户端上的URL将保留为“搜索”页面,而不是实际重定向到结果。
答案 3 :(得分:0)
如果需要,您还可以在登录查询字符串后嵌入要返回的URL。