问题: 在第一个完整页面请求时,我的控制器调用applicationServices Layer(Web服务代理到我的业务层),以便填充存储在我自己的控制器基类属性中的当前服务的集合。然后将其显示在视图中。 该控制器上下文中的所有内容都可以访问此“服务集合”。现在,当我通过AJAX调用进一步调用相同的动作方法时,我显然打了一个不同的控制器实例,这意味着我的服务集合是空的。
除了重新获得整个集合之外,我将在哪里存储此集合,以便在ajax请求之间保持持久性?我应该将它作为一个单独的DomainModel对象,Session对象吗?....因为ViewData不适合我obv。请原谅我的MVC无知:)
非常感谢任何帮助:)
答案 0 :(得分:2)
网络本质上是无状态的,MVC可以帮助你找到金属,也就是说,MVC不会尝试创造一些有状态的东西,这主要是你的ASP路径:每个请求都是一个请求它是自己的,它不应该知道过去任何其他请求。
我认为最简单的方法就是沿着这条路走下去,因为它会保持干净,快速,并帮助您坚持最佳实践,例如分离关注点。
AJAX更进一步:AJAX的想法是可以实现简单的“删除”操作,即您只需要在持久层上授权并执行一个非常小的查询。而已。您甚至不需要将修改后的页面传递给用户。通过JSON进行简单的机器可读成功/错误指示就足够了。
如果您开始为小型AJAX请求提供大量服务,那么您真正失去了大部分有用的东西。
我还建议你不要在基本控制器中存储一堆服务。有可能对于大多数请求,您只需要一小部分请求。最佳做法是仅检索您绝对需要的服务。