1

我计划在我的应用程序中同时具有 MVC 和 WebAPI 功能。将有一个使用简单的 MVC CRUD 控制器实现的管理站点,并且我还需要从远程客户端调用 RESTful API,并且将来可能从单页应用程序调用。我不太喜欢编写非常相似的类,它们仅在返回类型上有所不同——MVC 控制器返回包装在 View 中的数据,而 WebAPI 控制器只返回未包装的数据。在不重复太多代码的情况下实现我的目标的最佳方法是什么?

4

2 回答 2

5

在我看来,如果你使用 WebAPI,你的标准 MVC 控制器不应该用于 CRUD。你的 API 控制器应该处理 CRUD 操作,你的 MVC 控制器应该返回视图。

通过这条路线,它为您提供了几个不同的选项,用于在视图中显示数据的方式:

传统的

如果您想坚持使用更“传统”的路线,您可以从 MVC 控制器调用 WebAPI 控制器服务器端,水合模型对象并返回强类型视图。您可以通过使用HttpClient类或WebClient类来进行 API 调用并反序列化响应来做到这一点。

单页

如果您想尝试更“现代”的路线,您可以尝试 danludwig 的建议并构建更多的单页应用程序。在这种情况下,您的 MVC 控制器将只返回一个 HTML + JavaScript 视图,该视图依赖于客户端框架来进行 API 调用和更新 DOM。require + bone + knockback / knockout堆栈是一个很好的起点,但它确实有一些学习曲线。

无论哪种方式,你真的应该只在一个地方有 CRUD 逻辑,我相信这属于 API。

于 2012-12-26T17:16:20.717 回答
1

一种方法是让您的 MVC 控制器不返回强类型视图模型。相反,他们可以返回普通的 HTML + javascript,可以使用诸如骨干网或淘汰赛之类的东西来调用您的 Api 操作方法并填充 DOM。

于 2012-12-26T16:18:43.710 回答