MVC最佳实践跨视图传递ID

时间:2014-11-06 23:37:32

标签: asp.net-mvc

我刚刚开始使用MVC,我想知道在视图中传递ID等敏感信息的最佳做法......

我们假设我有一个场景。 我有一个管理MVC应用程序的汽车服务,允许用户为他们的注册汽车选择产品。

用户必须在选择产品进行服务之前先注册他们的汽车。

在注册视图中,他们会填写汽车详细信息,并在点击提交按钮时重定向到购买产品页面。当他们点击提交按钮时,我们会存储带有用户ID的汽车详细信息(我可以从身份获取)并从数据库中生成唯一的汽车ID。我想将这个新创建的车牌ID传递给下一个视图。

在购买产品页面中,他们可以选择不同的产品A或B,当他们选择时,会重定向到结帐页面。

我现在想要实现的是在结账页面,我们如何安全地携带用户在从以前的产品视图注册汽车和产品ID后获得的汽车ID,以便我可以使用userID,carID和的productID。

会话方式是否适用于此?或者任何其他更好的方法来解决这个问题。 有一个小例子的人会对我有很大的帮助。

谢谢,

1 个答案:

答案 0 :(得分:1)

在您给出的示例中,我当然建议将ID存储在会话中。网络是一种无国界的野兽,你在做的事情就是在用户访问网站/应用程序期间记录状态 - 这基本上就是会话的目的。

从会话中创建,存储和检索数据很简单,可以这样完成:

在会话对象中设置变量

[HttpPost]
public ActionResult Login(int carId)
{
    ...
    Session["carId"] = carId;
    ...
}

从Session对象中检索变量

public ActionResult Load()
{
    ...
    int carId = Session["carId"];
    ...
}

虽然这是一个基本示例,但它可以让您了解如何从会话中存储/检索简单类型的数据。

要存储更多信息(如大型对象),您可以使用[Serialize]类属性outlined in my answer in this post