代码之家  ›  专栏  ›  技术社区  ›  Rob Walker

“全局”状态和ASP.NET MVC

  •  1
  • Rob Walker  · 技术社区  · 15 年前

    作为非Web开发人员,我正在学习ASP.NET MVC。我正试图找到应用程序使用的最佳习惯用法,该应用程序的概念是选择一个“项目”在影响所有其他页面的第一页上工作。

    似乎有三种选择:

    • 只需将信息置于会话状态。很好,但不是很有价值
    • 将状态嵌入到所有URL中…因此,URL不是/products/details/1而是全部/(project_id)/products/details/1
    • 为此信息设置单独的cookie

    由于应用程序中几乎所有的URL都需要当前的项目,这似乎太过分了,使得构建在任何视图中使用的URL都需要更多的工作。它还要求我验证每个调用的权限,因为用户可以轻松地修改它。

    关于最佳方法有什么建议吗——使用这个会话是个坏主意吗?你说什么?

    2 回复  |  直到 15 年前
        1
  •  2
  •   DevelopingChris    15 年前

    你的选择2是我的选择。
    所以不是/products/1/details
    我会做项目/1/产品/1/细节

    它更符合休息。它实际上与MVC无关,但是如果您希望您的路由和URL像其他资源一样读取,那么您将希望该URL在斜杠处折叠并承载状态。其他的方法是在cookie中标记一个项目ID,但这会破坏链接,所以当有人离开并返回时,他们会被放回原来的位置。

    如果您将自己直接绑定到这个概念,那么会话也会使您很难进行测试。

        2
  •  1
  •   Eric Petroelje    15 年前

    就我个人而言,我只会利用这次会议。会议没有什么非MVCISH真正的-把它当作你的模型的一部分。

    使用cookie与使用会话没有什么不同。不过,将它嵌入到URL中并不是一个坏的选择,特别是对于“可链接性”来说,如果这是您的项目的一个问题的话。但是它有一个副作用,就是把URL弄得乱七八糟,并要求你不断地在一页一页地传递这个ID。