asp.net-mvc – ASP.NET MVC,维护Ajax请求之间的模型状态

问题:

在第一个完整页面请求时,我的控制器调用applicationServices Layer(Web服务代理到我的业务层),以便填充存储在我自己的控制器基类属性中的当前服务的集合.然后将其显示在视图中.

该控制器上下文中的所有内容都可以访问此“服务集合”.现在,当我通过
AJAX调用进一步调用相同的动作方法时,我显然打了一个不同的控制器实例,这意味着我的服务集合是空的.

除了重新获得整个集合之外,我将在哪里存储此集合,以便在ajax请求之间保持持久性?我应该将它作为一个单独的DomainModel对象,Session对象吗?….因为ViewData不适合我obv.请原谅我的MVC无知:)

任何帮助将不胜感激 :)

最佳答案 网络本质上是无状态的,MVC可以帮助你找到金属,也就是说,MVC不会尝试创建一些有状态的东西,这主要是你的ASP的道路:每个请求都是它自己的请求并且它不应该知道过去执行的任何其他请求.

我觉得最简单地沿着这条路走下去是因为它往往保持干净,快速,并帮助你坚持最佳实践,如分离关注点.

AJAX更进一步:AJAX的想法是可以实现简单的“删除”操作,即您只需要在持久层上授权并执行一个非常小的查询.而已.您甚至不需要将修改后的页面传递给用户.通过JSON进行简单的机器可读成功/错误指示就足够了.

如果您开始为小型AJAX请求提供大量服务,那么您真正失去了大部分有益的东西.

我还建议你不要在基本控制器中存储一堆服务.有可能对于大多数请求,您只需要一小部分请求.最佳做法是仅检索您绝对需要的服务.

点赞