asp.net-mvc-3 - MVC3 应用程序并跟踪用户最初进入的页面

标签 asp.net-mvc-3 url cookies authentication registration

感谢您花时间阅读我的问题。我们的站点访问者可能会到达另一个用户的个人资料页面。然后,我们将鼓励他们登录该网站,或者如果他们目前不是成员(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/

相关文章:

sql - 数据库 'master' 中的 CREATE DATABASE 权限被拒绝

html - 从 blob 存储下载到 webrole 的 html 文件出现 403 和 404 错误

linq - MVC3 Razor @Html.DropDownListFor

Django:从URL分发程序传递数据以查看而不将数据包含在URL中?

Javascript document.cookie = "key=value"追加而不是替换

javascript - 子文件夹中未设置 cookie

c# - 在asp.net mvc3图表助手中如何向系列数据添加标记

python - 从网站 csv 文件中读取变量名

arrays - 如何从 url 数组中获取单个 url?

javascript - 直到第二次刷新才设置 Cookie