为什么MVC而不是好的旧ASP.NET?仍然没有理解为什么我应该走这条路?

RJ.*_*RJ. 16 .net asp.net asp.net-mvc

我知道之前已经问过这个问题并且我已经阅读了所有的答案,但他们仍然没有给我我想要的答案.我需要具体的东西.我自愿向我们小组中的其他开发人员介绍MVC,这迫使我学习它.每个人都面临的一个重要问题是:"MVC带来了什么,我们在asp.net或MVC中无法做到的事情可以做得更快.我刚刚经历了Nerd Dinner并且实际创建了一个模仿书呆子晚餐的完整网站但是作为Scott Guthrie所做的伟大工作,有很大的差距没有得到解答,例如,如何使用按钮在列表页面上抛出一个文本框并进行简单搜索.在asp.net中,我我会在页面上抛出一个文本框,按钮和网格并将它绑定到一个sproc上然后我就去了.MVC中的等价物是什么.我想我需要一个非常好的教程来学习如何在不使用Linq-to-Sql的情况下使用MVC.

我知道我有点喋喋不休,但这是一个非常严肃的问题,似乎仍然没有答案.

另一方面,MVC的View页面带来了经典asp的噩梦,以及我们在使用代码隐藏页面后得到的所有内联代码.是的,MVC有Controller和Model类很棒,但我仍然不喜欢html中的经典asp标签.

在这里帮助我,我真的很喜欢MVC的概念,并希望它成功但我还需要更多!

小智 29

如何使用按钮在列表页面上抛出文本框并进行简单搜索.在asp.net中,我会在页面上抛出一个文本框,按钮和网格,并将其绑定到一个sproc并离开我去

这正是"经典"ASP.NET又称WebForms背后的最大问题.

你不应该考虑页面,按钮和事件.

您应该学习Web工作原理的基础知识.然后你就会明白网络就HTTP协议,命令GET,POST等而言.演示文稿是HTML,CSS和文档对象模型,它是JavaScript发挥作用的地方.实际上没有页面,url只是指向资源的指针,该资源不一定映射到服务器上的物理文件(.html或.aspx).

MVC的View页面带来了经典asp的噩梦,所有的内联代码都是我们在使用代码隐藏页面后得到的.

在使用WebForms之后我也来到了MVC,我发现我非常喜欢内联代码.它使视图结构非常清晰,不能说静态标记(aspx)与代码隐藏中的操作服务器控件的耦合.后者实际上是一场噩梦 - 你的代码正在生成标记输出,但你看不到在哪里以及如何.

MVC带给我们在asp.net或MVC中无法做到的表可以做得更快

它消除了WebForms给我们带来的丑陋的有状态抽象.你现在回到它开始的地方.你现在拥有的是:

  • 选择将演示文稿部分(视图)与应用程序逻辑分开.在所有混合在一起之前,代码隐藏与数据库通信,调用其他服务,修改标记.一团糟.它导致了大量严肃的应用程序编写,但难以维护.

  • 能够自动测试您的应用程序逻辑.使用WebForms和代码隐藏,您将如何调用某个场景?您可以使用Selenium等工具来模拟用户活动.现在,当您的视图只是一个被动表示层时,您不再有此问题.您可以非常轻松地测试业务逻辑和模型输出.视图可以显示结果.如果模型在特定场景中获得了正确的数据,则视图将正确显示它.如果不是那么没有.期.无需测试视图.

  • 控制您的标记.那就是你关心的.如果你是一个前Windows开发人员,他不会对HTML文档的有效性,语义上的正确性以及针对Web引擎进行优化,那么对你来说没用.我的意思是,"页面"有点显示,用户点击处理就像桌面应用程序一样,还有什么,对吧?但是如果你对所有这些事情感兴趣,那么你会看到最终的标记输出并看到它很难看,有很多错误,你无法解决这些限制.因为它是控件,按钮,数据网格等的显示方式.尝试修复它们需要覆盖那些控制的标记生成,这是一项繁重的任务.为什么不放弃它并手动完成所有事情?

MVC从表中拿走了什么?

服务器端处理"控制""事件",就像在Windows编程中一样.如果你正在为网络媒体开发一个类似桌面的应用程序,就像那些带有数十个控件的典型"商业"软件让你疯狂,那么MVC会让你发疯,因为你必须单独连接每一个控件. JavaScript的.

但是如果你不是在开发那些类型的应用程序(需要一定的心理能力),而是为web开发现代可用的软件,那么WebForms会让你发疯.迟早.


Ven*_*emo 10

过去几天我也在学习MVC.我的经验是提供一个不那么复杂的网络模型.

虽然WebForms承诺,它将使Web开发与Windows开发非常接近,具有复杂的事件模型,控件和所有内容.
为什么?因为当时Microsoft的开发人员基础主要是VB和C++开发人员,他们在表单,控件方面进行思考,这为他们开始为Web开发提供了一种简单的方法.

MVC提供的是对底层协议的更多控制以及对输出的HTML的更多控制.
此外,它们还为您提供内置的ASP.NET路由,因此您的网址也会更好看.

示例: StackOverflow是使用ASP.NET MVC构建的.

你的例子:

如何使用按钮在列表页面上抛出文本框并进行简单搜索.在asp.net中,我会在页面上抛出一个文本框,按钮和网格,并将其绑定到一个sproc并离开我去.

Action在当前创建一个for,在Controller页面上抛出一个Html.BeginForm指向该动作的表单(记住,使用MVC,你可以在页面上有多个表单),在其中抛出一个文本框和一个提交按钮.

然后,根据您的喜好,您可以为搜索结果创建单独的视图,也可以重用现有视图.新操作可以与旧操作命名相同[HttpPost](或者[HttpGet]如果您愿意),因此URL不会更多地混淆用户.然后你可以在你的行动中给你的SPROC打电话,你很高兴.
(这一切都可以在几分钟内完成.)

我喜欢MVC的另一件事是用它创建CRUD操作基本上非常容易.(与NerdDinner一样.)
VS生成视图所需代码的80%,然后您可以非常轻松地进行自定义.

我建议你阅读整本书,而不仅仅是NerdDinner的免费剧集,它会为你提供关于这项技术的非常好的图片.