2012-12-26 128 views
1

我打算在我的应用程序中同时具有MVC和WebAPI功能。将会有一个管理站点使用简单的MVC CRUD控制器实现,我还需要从远程客户端调用RESTful API,并且可能会在未来从单个页面应用程序调用。 我不太习惯编写仅在返回类型上有所不同的类 - MVC控制器返回包装在View中的数据,WebAPI控制器仅返回数据。 在不重复太多代码的情况下达到目标的最佳方式是什么?WebApi和MVC控制器

回答

5

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

通过走这条路,它给你几个不同的选择如何,你会在你的视图中显示的数据:

传统

如果你想坚持用更“传统“路由,你可以从你的MVC控制器调用你的WebAPI控制器服务器端,为一个模型对象提供水分并返回一个强类型的视图。您可以通过使用HttpClient类或WebClient类来完成此API调用和反序列化响应。

单页

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

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

1

一种方法是让你的MVC控制器不返回强类型的视图模型。相反,他们可以返回纯HTML + JavaScript,可以使用骨干或基因敲除来调用您的Api操作方法并填充DOM。

相关问题