Asp.net mvc 有没有理由我会使用淘汰MVC而不是淘汰JS?

Asp.net mvc 有没有理由我会使用淘汰MVC而不是淘汰JS?,asp.net-mvc,asp.net-mvc-3,knockout.js,knockout-2.0,knockout-mvc,Asp.net Mvc,Asp.net Mvc 3,Knockout.js,Knockout 2.0,Knockout Mvc,建议处理一些AJAX发布问题。我读了一些关于它的文章,我发现它是一个包装纸。所以我想知道这两者的真正区别是什么?既然存在,我应该为之烦恼吗?什么时候我会使用一个而不是另一个?淘汰MVC是WebForms的私生子。它通过控制器动作路由所有viewmodel方法,这意味着所有发生的事情都必须跳转到服务器并返回。我无法理解为什么有人会采用类似knockout的框架,它旨在成为客户端MVVM,并强制它为每个函数调用服务器 此外,在服务器上执行这些方法意味着,对于每个函数调用,都需要将整个viewmode

建议处理一些AJAX发布问题。我读了一些关于它的文章,我发现它是一个包装纸。所以我想知道这两者的真正区别是什么?既然存在,我应该为之烦恼吗?什么时候我会使用一个而不是另一个?

淘汰MVC是WebForms的私生子。它通过控制器动作路由所有viewmodel方法,这意味着所有发生的事情都必须跳转到服务器并返回。我无法理解为什么有人会采用类似knockout的框架,它旨在成为客户端MVVM,并强制它为每个函数调用服务器

此外,在服务器上执行这些方法意味着,对于每个函数调用,都需要将整个viewmodel传递给服务器,并返回给客户端。这是难以置信的浪费

使用淘汰MVC意味着为了不必编写javascript而牺牲客户端代码的所有性能优势。WebForms也做了同样的权衡。这不是个好主意。这是一个反模式


如果Knockout MVC明天消亡,web将是一个更好的地方。

Knockout.js的美妙之处在于,您可以通过简单地从服务器来回传递JSON来获得应用程序,而无需推送整个视图,而服务器必须将整个视图分块以生成HTML

再次将其放回服务器上似乎非常违反直觉!如果您对此感兴趣,最好首先使用razor语法来完成绑定


我的建议是使用knockout.js进行绑定,以便在客户端而不是服务器上进行绑定,如果这是您的目标的话。如果你想让你的视图在服务器上绑定数据,请使用razor。

我觉得Tyrsius的回答有点太消极了。Knockout MVC仍处于早期开发阶段,但从我所看到的情况来看,它有一些优势,并且比Webforms等服务器更轻。Visibly Dependencies完全在客户端上获取句柄,只有在使用函数时才对服务器进行调用。在处理复杂的数据结构时,有时无论如何都需要通过服务器,因此击倒MVC可能是一种节省编写大量Ajax处理的好方法


的确,它总是来回发送整个模型,这会产生一些开销,而不是自己构建。但我不会把它全部注销。特别是当它在将来得到正确的客户端处理以进行复杂的验证时。

我在搜索了一些关于淘汰mvc的内容后,发现了这篇文章。虽然我同意浪费网络带宽,但我还是被这一行代码所吸引:

@{
  var ko = Html.CreateKnockoutContext();
 }

这是一种生成淘汰视图模型的简洁方法。有没有人仅仅为了这个特性而使用淘汰MVC,而没有将所有逻辑移到服务器端

我刚刚遇到了这个问题,有一些非常消极的回答。我要把我的两分钱加起来

我刚刚开始使用KnockoutJS。因为我正在构建ASP.NET MVC应用程序,所以对我来说,使用类似于淘汰MVC的东西似乎是合乎逻辑的。在大多数情况下,这似乎是个好主意。如果我可以使用我所熟悉和喜爱的.Net功能编写javascript和
注释,我就不想花时间在我的页面上

话虽如此。。。是的,目前KMVC存在一些限制。将整个模型发送回服务器是一件大事。所以我所做的就是开始我自己的淘汰赛mvc。目前,这些变化必然是仓促进行的。但我现在有能力:

  • 创建子上下文(使用视图模型的完全不同的模型或组件)
  • 调用服务器时将模型的选定部分传回
  • 期望从呼叫返回的模型与发送的不同
  • 围绕ajax调用触发事件
  • 支持更多html5输入类型
  • 通过头向服务器传递防伪令牌(用于ajax调用)
  • 我可能忘了更多
我希望很快回来,把我所做的事情彻底清理干净。希望作者能在代码中包含这些更改。如果没有,我想我会继续用我自己的叉子。不管怎样,隧道的尽头都有光明。KMVC可能需要目前的工作,但我相信这个概念绝对值得去做

我肯定认为

如果淘汰赛MVC明天消亡,网络将是一个更好的地方

有点苛刻

编辑:

我看了看评论,又看了看原来的问题是什么。在这样做之后,我认为应该在我的答案中再加上一点:

首先,最初的问题是我为什么要使用Knockout MVC而不是Knockout JS?来回答/澄清(也许我只是挑剔)以下问题:Knockout MVC是一个框架,旨在使Knockout JS与ASP.NET MVC应用程序的集成更容易。它主要通过使用熟悉的强类型构造来生成KnockoutJS标记来实现这一点。它不是KnockoutJS的替代品。一定要使用KnockoutJS。问题是是否也使用淘汰赛MVC

话虽如此,作为开发人员,您仍然可以选择何时使用所有可用工具的各个方面。如果您想通过执行返回服务器的完整请求来处理功能的某个方面,那么就这样做。如果要执行ajax请求以检索/更新数据,请执行该操作。如果您想纯粹在客户端执行功能,那么就这样做

使用淘汰赛MVC并不妨碍您充分利用淘汰赛JS。使用Knockout MVC不会阻止您编写额外的javascript来处理尽可能多的客户端功能。仅仅因为Knockout MVC为您提供了一条捷径,可以生成对服务器的ajax回调,这一点并不重要