感谢您花时间阅读我的问题。我们的站点访问者可能会到达另一个用户的个人资料页面。然后,我们将鼓励他们登录该网站,或者如果他们目前不是成员(member),则注册为新成员(member)。这些操作使他们远离他们声明的初始页面/URL,但我们希望能够在完成登录/注册后通过“跟踪”他们开始的地方“跳转他们”回到该页面。 (注意:如果重要的话,我们使用的是标准的 Microsoft 成员(member)提供程序类。)“返回”部分看起来很简单,问题在于“跟踪”部分。
插图/示例:
访问者点击后到达网站:www.mysite.com/profiles/ID=108
然后访问者离开该页面进行登录。我们如何才能以某种方式最好地捕获 ID=108,以便(已登录)用户有一个很好的选择返回到该配置文件页面?我从阅读中了解到 cookie 不是最佳选择,但其他一些选项似乎让我的想法陷入困境,因为用户尚未登录,等等。
我可以采取任何具体步骤以最佳 MVC3 方式解决这个问题吗?
编辑:
public ViewResult MyProfile(int? id)
{
HttpCookie cookie = new HttpCookie("MySiteCookie");
cookie.Value = id.ToString();
cookie.Expires = DateTime.Now.AddYears(1); //or whatever time is appropriate
System.Web.HttpContext.Current.Response.Cookies.Add(cookie);
//do some other stuff
}
在另一端,为了使用 cookie,我已经(暂时)以这种方式将它放入菜单中:
var MyProfileId = "";
if (Request.Cookies["MySiteCookie"] != null)
{HttpCookie cookie = request.Cookies["MySiteCookie"];
MyProfileId = Server.HtmlEncode(cookie.Value);}
然后你把它放到你的链接中
最佳答案
你有几个选择:
1) 您可以在 Controller 中使用 Session 来存储值:
Session.Remove("ID");
Session.Add("ID", "108")
并在调用的 Controller 中检索。
ID = Session["ID"];
2) 您可以在登录 Controller 的查询字符串上传递 ID=108:
return RedirectToAction("Edit", "Profile", new { ID = "108" });
关于asp.net-mvc-3 - MVC3 应用程序并跟踪用户最初进入的页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10504880/