2015-11-06 121 views
1
的目的

我已经通过从ASP.NET网站如Getting Started with Knockout in ASP.NET 5ASP.NET 5和MVC

我喜欢自带开箱的依赖注入和记录功能的基本文档和各种教程工作它是,我可以想象创建我的数据服务层注册它在启动类的配置服务部分。显然,这将允许我访问我创建的任何未来控制器中的任何注册服务。

但是,在完成了一些教程和演练之后,我发现如果我选择使用knockout和jquery,那么我会在JavaScript和Get/POST/PUT等页面上直接从客户端创建我的viewModel。该页面的MVC控制器永远不会被访问。那么为什么要打扰MVC?

我看过一些例子,人们在MVC控制器上调用一个动作,然后通过API调用,但这看起来有点多余。

我对来自XAML MVVM的这项技术比较陌生,对于点击淘汰赛来说非常熟悉。那么,为什么我会为客户端应用程序困扰MVC框架呢? 当然,如果我选择使用knockout/jquery,那么MVC是多余的?

任何人都可以帮助清理我应该继续学习什么吗?

+0

你的问题基本上归结为“为什么当客户端MV *框架可用时使用服务器端MVC框架。”对? – mason

+0

是的。基本上,我试图弄清楚我可以使用的一个堆栈,因为我将宝贝放入现代Web开发中。即使我没有立即使用控制器功能,我应该继续使用MVC吗?考虑到我稍后可能会学习使用它?我打算构建SPA应用程序,我将构建的东西永远不会被搜索引擎看到,所以也许我应该从一个空白的网站开始提供主页面,并让JavaScript从那里接管。 – John

+0

在这种情况下,我投票结束主要是基于意见和/或过于宽泛。你真的只需要找到适合你的应用程序的正确组合,这对于外界不熟悉你正在做什么来提供建议的人很困难。这是一个很好的问题,当我开始一个新项目时,我会问自己,但我不认为它可以在Stack Overflow上得到解答。 – mason

回答

2

您选择为您带来最大收益的解决方案。如果您在客户端纯粹实施应用程序,使用淘汰组件构建页面等,则可以随WebAPI一起使用。没有什么可以从MVC中错过的。

但是,在某些情况下,您仍然喜欢混合它。例如,你可能更喜欢使用MVC的partials来组织代码。您可能包含基于Razor自定义Html Helper的漂亮的缓存页面本地化,因此可以让js保持清洁和轻松。您可能需要对MVC提供的模型进行开箱即用的客户端验证。

某些项目可能仍然有很多对MVC和其上构建的库的引用。那些日子里,没有什么你不能做ASP MVC,但它仍然有很多东西可以提供,而不使用所有东西的惩罚很小。无论如何,即使您跳过'V'部分,Models(或ViewModels)仍然存在,您不希望发送您的Data Entities视图ajax。