如何在ASP.NET MVC Web应用程序中传递上下文

时间:2008-09-23 06:00:34

标签: asp.net-mvc

好的,我是ASP.NET网络应用程序的新手......以及一般的网络应用程序。我只是在为工作中的内部工具做一些游戏应用程序。

给出本教程......

http://www.asp.net/learn/mvc-videos/video-395.aspx

该示例基本上具有全局任务列表。

所以,如果我想做同样的事情,但现在我想维护项目的任务。所以我现在选择一个项目,然后获得该项目的任务列表。当我与任务交互时,如何保留我选择的项目的上下文?我会以某种方式将其编码到链接中吗?或者你把它保存在某种会话数据中?或其他一些方式?

4 个答案:

答案 0 :(得分:5)

听起来你有多个项目,每个项目都有很多任务,最好让项目在URL中设置。这需要"/projects/{project}/tasks"之类的路线。它遵循RESTful URL原则(即URL描述内容)。

如果用户可能在多个浏览器窗口中打开了不同的项目,则使用会话状态将不起作用。假设我正在登录您的系统,并在两个选项卡中选择两个项目。首先,会话设置为第一个打开的选项卡的项目,但是第二个选项卡加载后,会话将被覆盖到此项目。如果我在第一个选项卡中执行任何操作,则会记录第二个项目。

答案 1 :(得分:1)

我用:

  • 应该持续多个请求的状态的会话状态,例如使用向导时我注意不要在这里放太多数据,因为它可能导致可伸缩性问题。
  • TempData适用于您只希望状态可用于下一个请求的情况(例如,当您重定向到另一个操作并且您希望该操作可以访问该状态时,但您不希望它处于闲置状态之后)
  • 隐藏的表单字段[输入类型=“隐藏”]用于与表单数据相关的状态以及我希望控制器知道的状态,但我不希望显示该数据。也可用于将状态推送到客户端,以免使服务器资源负担过重。

答案 2 :(得分:0)

好的,从我所知,最好的选择似乎是将其保存到会话数据

答案 3 :(得分:0)

RESTful网址,隐藏字段和会话Cookie是您的朋友。