ASP.NET MVC用户 - 你错过了WebForms的任何内容吗?

时间:2009-04-17 10:14:24

标签: asp.net asp.net-mvc webforms

有很多关于ASP.NET WebForms和ASP.NET MVC之间差异的文章和讨论比较了两个框架的相对优点。

对于有使用过WebC的WebForms经验的人,我有一个不同的问题:

WebForms的首要任务是什么,MVC没有,你真的错过了什么?

修改

没人提到WebForms验证控件。我现在正在研究一些具有一些相关验证规则的代码,并且为这些实现客户端验证的速度很慢。

14 个答案:

答案 0 :(得分:24)

作为一名PHP /经典ASP人,我大约5年前进入了webforms世界。在用脚本语言对表格,日历等进行手工编码之后,似乎webforms将成为一个巨大的帮助之手。这是......直到你需要甚至比交替的行颜色等更多的定制。是的,你可以通过几个拖放动作运行gridview。但即使是看似简单的事情,定制也可能变成数小时的折磨和研究。

我还认为.NET在线提供的很多示例都过于简单,因为它们使得webforms看起来“简单”。当然你可以让gridview只显示10万条记录表的10条记录,但你是否意识到默认情况下所有记录都被加载到内存中?作为纠正该问题的过于复杂的一个例子,我花了一段时间创建一个只能加载大块记录的可分页网格视图,但它不起作用。经过一个小时的研究,我发现你必须删除IDE插入代码隐藏的额外属性。当像这样的愚蠢的东西让你落后时,这并不好玩。

而且每次都会发生。

甚至不让我开始使用viewstate。

然后云分开了,.NET MVC交给了我们。现在这是一个框架。如果您是Web开发人员,您应该知道当有人向您的Web服务器发出请求时会发生什么。 webforms放在其上的抽象和层层是一种伤害。

在大多数情况下,我能够以PHP脚本的速度开发应用程序,并且最终可以对UI进行全面控制。这就是它的全部内容。

另外需要注意的是:当人们发现他们必须使用<%=%>时,他们需要停止抱怨他们在MVC视图中创建“标记汤”。标签等。将gridview拖放到页面上,设置所有属性,然后查看它给你的垃圾。而你还没有完成,现在你必须附加事件并在代码文件中添加更多与gridview相关的代码。谈论搞乱编码体验。我会在任何时候采用简单的foreach循环。

答案 1 :(得分:17)

没什么:)

我非常喜欢ASP.NET MVC的工作方式。我想控制我的HTML。我不需要控制。我们可以使用HTML帮助程序和第三方工具获得相同的功能,例如jQuery和所有可用的插件。

这是一个关于如何在ASP.NET MVC上使用与jQuery grid类似的网格视图的示例。

尽管Ruby on Rails是一个更成熟的框架,但我确实认为ASP.NET MVC正处于正确的轨道上。

答案 2 :(得分:9)

我想念gridview,只需很少的努力即可轻松实现排序和分页。我一直使用网格功能,但仍然没有在mvc中找到一个好的选择

答案 3 :(得分:3)

我确实错过了一些东西:

能够在几秒钟内获得可分页网格。

虽然它不太公平,因为我还必须创建一个类来提供给ObjectDataSource以获得高效的分页。而且分页只能用于JavaScript,或者我必须编写代码来读取QueryString(例如& pag = 2等)等等。

事实上......我想没有太多想念。

答案 4 :(得分:2)

在页面上只有一个表单的简单性。我认为html表单功能有点笨拙且不太直观,我想有一个很好的理由为什么webforms创建者试图抽象出webforms中的表单处理。

答案 5 :(得分:2)

我肯定会随着时间的推移纠正一个差异,就是网络表单的在线参考资料和示例数量相对于MVC相对稀疏的数量而言。但是,有人可能会争辩说,Web表单上的很多材料都涵盖了MVC不再需要的页面生命周期等主题(谢天谢地)。

答案 6 :(得分:2)

直到现在还没有。

我非常想念MVC每天都在工作,而我会看到丑陋的WebForms代码,我想把它全部擦掉,现在让一切都透明,干净,漂亮。

当然,只有时间会证明新女孩是否真的比你的老太太好。

答案 7 :(得分:2)

听起来很疯狂,我想念日历控件。不适用于datepickers或类似的东西,而是用于安排应用程序,在这些应用程序中,您希望通过日期渲染事件注入可选择或可单击的链接来显示整页月份/展望样式事件日历。

如果有人知道MVC替代品,请分享!在这种情况下滚动你自己是可行的,但有点痛苦。

答案 8 :(得分:2)

Viewstate是我想念的东西 - 直到我记得它引起的问题。

然后我弯下腰来寻找另一种方法(更智能的模型绑定,ajax等),这些方法通常会变得更好(但发现和实现的速度会慢一些)。

答案 9 :(得分:1)

我想念的主要是文档。 WebForms,由于它相对成熟,有很多官方文档,还有很多第三方示例和片段可用。然而,这正在改善所有项目,并且随着MVC获得动力,我希望它将达到标准。

答案 10 :(得分:0)

没什么。

WebForms会自动执行此操作,但我经常不得不破解它以满足我的需求。 MVC让我做我想做的事情,我可以破解它以更好/更快地完成任务。

我喜欢控制输出,喜欢干净,轻盈的风格。

答案 11 :(得分:0)

输出缓存在ASP.NET MVC中没有真正实现(从版本2开始)。有一些技巧可以让它工作,比如using Web Controls with the OutputCache directiveusing WriteSubstitution,但所有这些技巧都以某种方式违背了MVC的本质。除了整个操作方法之外的任何其他输出缓存真的很难在ASP.NET MVC中工作,并且总是会产生巨大的技术债务。由于输出缓存(尤其是在较新版本的IIS中)与数据层缓存相比具有令人难以置信的性能,因此这是一种耻辱。

答案 12 :(得分:0)

拖放控件的简单性。 可能在不久的将来可能会在mvc4中看到其中一些

答案 13 :(得分:0)

参考: - http://www.codeproject.com/Articles/808297/Things-you-will-miss-in-ASP-NET-MVC-as-an-ASP-NET

我不会说我想念,因为所有的变化都是好的。但是,我会想念下面的

  1. 可爱的服务器控制谁只是眨眼输出。
  2. 后面的代码文件。由于某种原因,双击并转到后面的代码使我更胜一筹。
  3. Viewstate魔法。
  4. 现在我需要接受POST和GET的头痛。
  5. enter image description here