我何时以及为什么应该考虑 asp.net MVC?

2024-06-28

我最近注意到很多关于 asp.net MVC 的讨论,但我还没有找到关于何时、何地或为何要在 WebForms 上使用它的清晰或令人信服的描述。

假设我想构建一个小型 Web 应用程序,允许人们在线宣传某些商品。该网站将有 4 个用例:

  • 搜索广告
  • 查看房源
  • 查看项目
  • 放置广告

我们假设:

  • 我对控制器的单元测试不是特别感兴趣。该页面要么正确呈现项目列表,要么不正确呈现。
  • 我对对 HTML 标记的更多控制感兴趣。
  • 我对仅仅为了使用最新的流行技术不感兴趣。
  • 我有兴趣使用在最终解决方案的生产力、性能、可维护性和简单性方面最适合该工作的工具。
  • 我不想为了让一些简单的工作而必须解决一堆细微差别。

所以,我的问题是:

  • 这两种模型之间的根本区别是什么?
  • 在哪种情况下,一种比另一种更好?
  • asp.net MVC 的问题是什么(我知道 WebForms 的问题)
  • 对于我们的示例应用程序,使用 asp.net MVC 而不是 WebForms 可以获得什么好处?
  • 对于我们的示例应用程序,使用 asp.net MVC 而不是 WebForms 会损失什么?
  • 在同一个小型应用程序中混合和匹配模型是否可行?

感谢任何花时间提供答案的人。


  • 这两种模型之间的根本区别是什么?

WebForms 尝试模仿 WinForms 开发,允许您重用大量预制控件,并通过隐藏的 _VIEWSTATE 机制伪造 Web 应用程序状态。

MVC 是一种旨在帮助您分离数据(模型)、业务逻辑(控制器)和表示(视图)的模式。它更符合网络的本质:RESTful URL,无状态。

  • 在哪种情况下,一种比另一种更好?

在我看来,对于大量使用控件的 Intranet 应用程序,WebForms 对于减少开发时间很有用,因为有了设计器,您可以非常快速地创建 UI,并让框架自动管理应用程序的状态。

对于任何其他项目,尤其是公共网站,即使是小项目,我认为 MVC 是最佳选择。

  • asp.net MVC 有哪些陷阱(我知道有哪些陷阱) 网络表格)

我想说,要完全理解 MVC 模式及其强大功能,需要一些学习曲线。此外,由于该框架仍处于测试阶段,您可以预期 API 在发布之前会经历一些细微的变化。

由于 JavaScript 在 MVC 中并没有对您隐藏,因此如果您不熟悉它,也需要一些时间来学习。不过 jQuery 极大地简化了这一过程。

  • 对于我们的示例应用程序,使用 asp.net MVC 而不是 网络表格?

您将更好地控制 HTML 标记和 Javascript 行为、更清晰的关注点分离和一些易于测试的代码库(即使您似乎对单元测试不感兴趣)。

  • 对于我们的示例应用程序,使用 asp.net MVC 而不是我会失去什么 网络表格?

您将失去构建页面和应用程序状态管理的“拖放”快速方法。

  • 在同一个小范围内混合和匹配模型是否可行? 应用?

从某些方面来说,似乎是的。

我建议观看这次演讲 http://channel9.msdn.com/pdc2008/PC21/作者 Phil Haack,他对该框架进行了很好的概述,并邀请 Jeff Atwood 谈论他如何用它构建 StackOverflow。

他解释了 SO 如何使用一些用于验证码的 WebForms 控件,这些控件将自身呈现到视图中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我何时以及为什么应该考虑 asp.net MVC? 的相关文章

  • SignalR - 如何向除呼叫者之外的所有人发送消息

    我有一个 Aspnet core 3 1 MVC 应用程序 我在其中配置了 SignalR 集线器 我有一个控制器 我可以在其中进行依赖注入 oIHubContext private readonly IHubContext
  • 在 SelectList 集合中设置所选项目

    我有一堂具有以下属性的课程 它构建了一个SelectList现有列表中的对象 然后设置所选项目 public SelectList ProviderTypeList get SelectList list new SelectList my
  • 使用 MVC 5 RouteArea 属性时找不到默认区域视图

    我有一个包含多个区域的 MVC5 项目 我有一个默认区域 名为Default 并在其中有一个默认控制器 名为DefaultController 这可以通过站点路径访问 RouteArea public class DefaultContro
  • ASP.NET MVC 4 FileResult - 错误

    我在控制器上有一个返回 PDF 的简单操作 工作正常 public FileResult GetReport string id byte fileBytes manager GetReport id string fileName id
  • 即使在不活动状态下,Hangfire 也会继续运行 SQL 查询

    我正在开发一个 ASP net MVC 5 网站 并使用 Hangfire 来安排一些任务 在本例中每 3 分钟一次 我知道一个事实是 运行这样的任务 以及与之相关的数据库查询 只需要几秒钟 我面临的问题是 Hangfire 似乎让我的 S
  • 为什么我应该使用 @Url.Content("~/blah-blah-blah")?

    我无法理解我可以从中获得的好处Url Content https msdn microsoft com en us library system web mvc urlhelper content aspxASP NET MVC 中的方法
  • 重载控制器动作

    几分钟前 当我尝试在我的一个控制器中重载操作时 我有点惊讶 I had public ActionResult Get return PartialView return all things I added public ActionRe
  • 如何在 web.config 中设置默认的 text/html 内容类型?

    我想将 ASP NET MVC 应用程序中网页的默认内容类型设置为 text html 我知道这可以通过向我的所有 元素添加 ContentType text html 来完成 但我更喜欢使用 web config 我怎样才能做到这一点 T
  • 配置的托管模块出现 Asp.net MVC 错误

    我有自定义身份验证HttpModule这是相当困难的 但我希望它仅针对托管请求运行 而不是静态请求 Asp net MVC 自动添加 IIS7 Web 服务器的配置部分
  • filters.Add 与 FilterProviders.Providers.Add

    我遇到了一个示例 MVC3 代码 其中包含以下内容Global asax file public static void RegisterGlobalFilters filters Add new MyFilter1 var provide
  • 从控制器返回 html 字符串并显示在视图中

    如何返回包含字符串属性的模型 li 元素并在视图中显示它 如果我只写 Model Messages 它会显示所有字符串 我需要 html 格式 您可以使用Content带有 Content Type 的方法text html直接返回HTML
  • 删除高图表上的导出和打印按钮插件

    我正在使用 MVC 目前正在使用 highchart 我正在使用 Exporting js 以便用户可以打印或导出 highchart 图表 我的视图中有两个图表 我想禁用其中一个图表的打印和导出 我怎样才能做到这一点 Exporting
  • 我可以指定自定义位置来在 ASP.NET MVC 中“搜索视图”吗?

    我的 mvc 项目有以下布局 Controllers Demo 演示 DemoArea1Controller 演示 DemoArea2Controller etc Views Demo 演示 DemoArea1 Index aspx 演示
  • MVC 4 - 在局部视图中使用不同的模型

    请忍受我的noobness 我对 MVC 模式非常陌生 我正在尝试做什么 我正在为我的网站上的注册用户构建个人资料信息页面 该页面将列出有关用户的数据 例如出生日期 电话号码 订阅状态等 您明白了 我还想要一个表格让用户更改密码 电子邮件地
  • 如何在MVC4中隐藏URL参数

    http localhost 49397 ChildCare SponsorChild 83 这是当我单击表中的操作链接并重定向到编辑操作时生成的链接 现在我想隐藏 URL 中的数字 83 我怎样才能实现这一点 我正在使用 VS2010 M
  • 根据当前文化调用不同(本地化)视图

    我在用着LocalizationAttribute它实现了ActionFilterAttribute本地化视图 我简单地说 Localize 在控制器上 我使用 LocalizeStrings resx 文件根据当前线程上的语言进行应用 一
  • HttpContext.Current.Items["value"] 不起作用,因为 AngularJS 调用创建新会话

    我正在使用 C MVC 和 AngularJS 我的问题是我的 MVC 程序创建了一个HttpContext Current Items value 并在初始主控制器中设置值 但是当我的 AngularJS 通过 ajax 调用调用应用程序
  • 如何启用 jqGrid 的 Excel 导出按钮

    你好 我想在 jqgrid 的寻呼机中显示 导出到 Excel 按钮 我尝试了很多方法 阅读了很多文章 帖子 但我没有看到这个按钮 文档也没有任何有用的东西 我应该执行哪些操作才能看到此按钮 诗 我使用 ASP NET MVC PSS 我的
  • “后退”按钮和防伪令牌

    我得到了一个Runtime error相关防伪属性 执行以下步骤 创建 MVC Web 应用程序并启动 登记 电子邮件受保护 cdn cgi l email protection Sign out 登记 电子邮件受保护 cdn cgi l
  • Asp.net Mvc自定义机制处理未授权请求

    对于我的网站 我希望安全控制器 或操作 具有以下行为 如果用户发出正常请求重定向到登录页面 我可以轻松做到 如果请求是Ajax类型Request IsAjaxRequest true 返回状态码401 我如何为此创建一个过滤器 public

随机推荐

  • Sympy 求解无法找到简单方程的零空间

    我正在尝试使用 pythons 模块找到各种函数集的零空间sympy 它设法找到了一些集合的解决方案 例如 x 1 x x 2 x 2 我的代码是 from sympy import solve factorial from sympy a
  • PHP 警告:除以零

    我正在学习 php 并构建了一个实验性的基于表单的计算器 也使用 html 和 POST 方法 该计算器将值返回到表 当我输入值并单击提交时 计算器可以正常工作 但当我第一次运行代码时 我在最后一行不断收到两个 除以零 错误 在这里或通过谷
  • Doxygen 报告“潜在的递归类关系”

    我有一个 C 模板类base Foo
  • Scala 中表达式和语句有什么区别

    我是 Scala 世界的新手 想知道表达式和语句之间有什么区别 以及为什么 if else 用于表达式 而不是语句 是否有办法在 if else 中使用语句 EDIT 正如 J rg W Mittag 在评论中指出的 这个答案实际上是错误的
  • 为什么java Native Memory Tracking中的内部内存增加

    我的应用程序在docker容器中运行 它使用scala并使用 OpenJDK 64位服务器VM 构建25 102 b14 混合模式 其Xmx设置为16GB 容器内存限制为24Gb 运行一段时间后容器被杀死的时间 Last State Ter
  • scanf("%d", char*) - char-as-int 格式字符串?

    字符作为数字的格式字符串修饰符是什么 我想使用 sscanf 将一个不超过 255 实际上少得多 的数字读入 unsigned char 类型变量 使用典型的 char source x32 char separator unsigned
  • 使用 JavaScript 从 HTML 字符串中提取文本

    我试图使用 JS 函数获取 HTML 字符串的内部文本 字符串作为参数传递 这是代码 function extractContent value var content holder for var i 0 i lt value lengt
  • UiBinder 文件中的自定义标签

    当使用
  • 如何覆盖 AutoMapper 对单个属性的配置?

    我正在尝试使用 AutoMapper 12 0 0 来修复错误的字符串属性值 在下面的示例中 我的类具有一些字符串属性 并且对于除我需要执行的属性之外的所有属性 Trim 对于剩下的一个 我需要执行 ToUpper 代替 Trim 问题是我
  • android.accounts.AuthenticatorException:绑定失败

    我收到以下异常 我知道没有什么可继续的 但似乎几乎没有工作文档 可以说 我已经尝试了实现我自己的身份验证器的所有示例 我找到了建议的答案here https stackoverflow com questions 10736245 auth
  • 在此类的对象上调用 start() 安全吗? Java 并发实践中的一个例子

    首先 我将提供我将要讨论的源代码的链接 因为复制 粘贴会使这个问题页面太长 在清单 5 15 中http jcip net listings CellularAutomata java http jcip net listings Cell
  • Javascript构造函数属性有什么意义?

    试图深入研究 Javascript 对 OO 的看法 并且像许多其他人一样 遇到了关于 OO 的困惑constructor财产 特别是 其意义在于constructor财产 因为我似乎无法使其产生任何影响 例如 function Foo a
  • Netlify:如何部署嵌套在文件夹中的站点?

    我有一个存储库 它的后端和前端 create react app 位于两个单独的文件夹中 对于构建命令 我有类似的东西cd frontend npm run build对于发布目录 我有类似的东西frontend build 但这不起作用
  • 有没有办法在将文件写入响应后完成回发?

    我有一个按钮 单击该按钮后 将生成 PDF 并将其写出到响应中 这是代码的基本结构 try using Stream stream generatePdf var file createFile stream file Transmit H
  • 在 C# 中提取私钥字节

    我目前可以使用以下命令使用 OpenSSL 从 PFX 文件中提取私钥 openssl pkcs12 in filename pfx nocerts out privateKey pem openssl exe rsa in private
  • 初学者问题:从 Python 中的函数返回布尔值

    我试图让这个石头剪刀布游戏返回一个布尔值 如 set 中所示player winsTrue 或 False 具体取决于玩家是否获胜 或者完全重构此代码以使其不使用 while 循环 我来自世界的系统管理员 所以如果这是以错误的风格编写的 请
  • 如何将有向无环图 (DAG) 转换为树

    我一直在寻找将 DAG 转换为树的 C 示例 有人有正确方向的例子或指针吗 澄清更新 我有一个图表 其中包含我的应用程序需要加载的模块列表 每个模块都有一个它所依赖的模块列表 例如 这是我的模块 A B C D 和 E A 没有依赖关系 B
  • Haskell 中有“对象平等”的感觉吗?

    如果我在 Haskell 中有一个单链表 data LL a Empty Node a LL a deriving Show Eq 我可以轻松实现在末尾和开头插入的方法 但是在特定元素之后或之前插入又如何呢 如果我有一个LL of Inte
  • 可变字段数的数据库结构设计

    对于某种库存系统 用户可以创建一个item type它具有某些属性 现在每种类型的属性数量都是可变的 我应该如何使用 DBStructure 来解决这个问题 只需制作 X 份量propertyX领域 还是有其他方法可以以这种方式实现灵活性
  • 我何时以及为什么应该考虑 asp.net MVC?

    我最近注意到很多关于 asp net MVC 的讨论 但我还没有找到关于何时 何地或为何要在 WebForms 上使用它的清晰或令人信服的描述 假设我想构建一个小型 Web 应用程序 允许人们在线宣传某些商品 该网站将有 4 个用例 搜索广