【问题标题】:MVC C# Best approach - session variableMVC C# 最佳方法 - 会话变量
【发布时间】:2012-07-23 04:10:27
【问题描述】:

我有一个详细信息和编辑页面,用户可以从该页面通过单击电子邮件超链接发送电子邮件。

当他们点击“详细信息”或“编辑”页面超链接时,我会转到控制器,该控制器会打开一封用户可以编辑的电子邮件。

提交电子邮件后,我会转到 [httppost]。

在 httppost actionresult 上,我需要使用 return RedirectToAction 来将用户重定向回他们开始的编辑或详细信息页面。

我正在考虑将此信息保存在会话变量中,以了解用户的来源:

   Session["Originated"] = "Edit";

   Session["Originated"] = "Details";

或者有没有更好的方法来跟踪这个。

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3 razor session-variables


    【解决方案1】:

    也许添加路由参数?例如 /Email/Create?originated=Edit。它将使您的所有内容保持无会话。

    示例: 在视图中

     @Html.ActionLink("Create email", "Create", "Email", new { originated = "Edit" }, null)
    

    在行动

    public ActionResult Create(string originated)
    {
    ...
    }
    

    【讨论】:

    • 我同意,并声明在大多数情况下你应该避免使用 Session 除非你有一个全局使用的值。
    • 如何添加路由参数
    • 我假设您的控制器称为电子邮件,您的操作称为创建。如果是这种情况,您可以这样做:电子邮件控制器中的 public ActionResult Create(string origin) { }。
    • @Alexey - 我明白你的意思,但在 [HttpPost] 上,这是我需要获取 origin 价值的地方,但似乎它已经消失了。我无法控制视图
    • 将其嵌入到视图模型中。添加像Origin这样的属性。在 GET - 用它填充您的视图模型,在视图中您可以添加隐藏输入 @Html.HiddenFor(m=>m.Origin) 并在 POST 上检索它 =)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-06-20
    • 2011-01-02
    • 2010-09-15
    • 1970-01-01
    • 2021-04-09
    • 1970-01-01
    • 2012-10-18
    相关资源
    最近更新 更多