ASP.net 模型视图演示器值得花时间吗?

2024-03-03

我这个周末正在阅读有关 ASP.net MVP 模式的内容,似乎即使是最简单的任务也会花费太多精力,如果以 MVP 模式进行,回报似乎是在更大的项目中,但我想,如果我将会追随MVP。为什么不直接用 ASP.net MVC 来做这个项目呢?

我之所以关注 MVP 模式,是因为我注意到在我的所有 ASP.net Webform 项目中,如果我在 Web 上有很多服务器控制,则后面的代码中有很多代码仅用于事件处理所以我一直在寻找减少这种情况的方法,并遇到了 MVP 模式。

是否值得努力遵循 MVP 模式或直接切换到 ASP.net MVC?


我建议您阅读以下两个链接,以帮助您快速了解 MVP 和 MVC:

  • Gil Fink 撰写的一篇很棒的博客文章,介绍了 MVP 和 MVC 的不同优势 http://beta.blogs.microsoft.co.il/blogs/gilf/archive/2009/01/16/deciding-when-to-use-asp-net-mvc-framework.aspx
  • 关于 MVP 和 MVC 之间有什么区别的 StackOverFlow 问题 https://stackoverflow.com/questions/2056/what-are-mvp-and-mvc-and-what-is-the-difference

你应该切换吗?
根据您告诉我的内容,我建议您使用上面文章中提到的被动 MVP 模型。

我的主要假设是:

  1. 您处理 WebForms 应用程序的现有代码库
  2. 您需要使用第三方 .Net 控件来实现现有功能
  3. 您正在处理现有应用程序,但没有时间重新构建它们
  4. 您将来开发的任何 ASP.Net Web 应用程序,您都可以逐步应用被动 MVP 并立即获得 TDD 的好处

您的视图(代码隐藏+ aspx)本质上变得愚蠢并且只执行简单的任务:

  • 获取演示者提供的信息
  • 响应事件并向演示者提供返回信息

我已广泛使用此模型进行 Web 表单开发,并且我无法想象无法对我的模型和 Presenter 代码进行单元测试。一旦您建立了基本模型(不需要很长时间)并且看到了单元测试的强大功能,使用 Web 表单就会变得很有趣。

我使用的模型基于的 MVP 内容的一些链接:

  • MVP 模型的简单示例 http://www.codeproject.com/KB/aspnet/EasyExampleForMVP.aspx
  • ASP.Net 的简单 MVP 模型 http://www.c-sharpcorner.com/UploadFile/shivprasadk/1246712242008074334AM/12467.aspx
  • ASP.Net 的 MVP 和 MVC 示例 http://www.codeproject.com/KB/aspnet/AspNetMvcMvp.aspx

我还建议您学习 MVC。
如果时间允许,将现有的应用程序移植到 MVC。这样,您唯一的重点就是了解 MVC,当您将逻辑转移到 MVC 模式中时,您会发现在 WebForms 中实现的东西,并且从未考虑过,但现在需要以另一种方式解决。比较模式并看看什么适合您的好方法。

希望这对您有所帮助,如有任何问题,请随时提出。

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

ASP.net 模型视图演示器值得花时间吗? 的相关文章

  • Active Directory UserPrincipal.Current.GetGroups() 返回本地组而不是 Web 服务器上的组

    以下内容在我的本地开发盒上效果很好 但是 当我将其移动到网络服务器时 它失败了 甚至不会记录错误 public static List
  • 如何从代码隐藏中向我的 div 添加点击事件?

    如何从代码隐藏中向我的 div 添加点击事件 当我点击 div 时 会出现一个消息框 其中显示 您想删除它吗 并在框中显示 是 或 否 全部来自后面的代码 while reader Read System Web UI HtmlContro
  • MVVM ViewModel 与 MVC ViewModel

    ViewModel 是一个在 MVVM Model View ViewModel 和 ASP NET MVC 的推荐实现中使用的术语 鉴于每种模式都使用相同的术语 研究 ViewModel 可能会令人困惑 MVC ViewModel 和 M
  • 响应.WriteFile

    有一个具有特定语法的 URL 用于下载文件 用户在文本框中输入文件名并按下下载按钮 在单击事件中 将调用 Response WriteFile 将文件发送到客户端 现在我想创建另一个带有页面的网站 用户在其中输入文件名并按下载按钮来下载该文
  • 文本框验证(无空格)

    我有一个网页 其中有一个文本框 我的要求是我不想在文本框中留出空间 如果用户在文本框中留出空间 它会指示文本框中没有空格 如果您打算捕获空格不是有效字符的值 您可以使用正则表达式验证器 http msdn microsoft com en
  • ASP.NET - 在 GridView 中显示图像和 pdf

    我想在 asp GridView 中显示 图像 列 这个想法是提供图像的缩略图以及实际尺寸图像的链接 对于某些行 这也可以是 PDF 文档 我想要 PDF 的链接 PDF 或图像存储在 SQL 数据库中 现在我在处理程序 ashx 文件中出
  • Kendo Ui MVC EditorTemplateName 在 PopUp 编辑模式下不起作用

    我想在 Kendo Ui 网格中使用 EditorTemplateName 作为外键列 当网格编辑模式为内联时 一切正常并且我的模板已加载 但是当将模式更改为弹出时不加载模板 如何修复它 Html Kendo Grid
  • 如何在单个 Razor 视图中编辑多个模型

    我是 MVC3 的新手 我有多个模型 例如BussinessDetails ContactPerson ServiceArea Address以及更多型号 我有一个单一的视图页面 其中共享视图页面如Contacts BusinessDeta
  • Razor View Engine 是否适用于 Mono?

    我尝试搜索了一下 但没有找到答案 Razor View Engine 在 Mono 中工作吗 是的 它确实 我让它在 Linux 上与 mono 一起工作 You need mono 2 10 2 from the stable sourc
  • 无法使用 SMTP 将电子邮件发送到外部域

    我无法将电子邮件发送到外部域地址 例如 电子邮件受保护 cdn cgi l email protection 使用下面的代码 SmtpClient smtpClient new SmtpClient smtpMailServer smtpC
  • 如何强制 Asp.Net Identity 2.0 使用自定义角色而不是 IdentityUserRole

    我已经扩展了 IdentityUserRole 如下 public class ApplicationUserRoles IdentityUserRole
  • 将参数从 Web 表单传递到 Crystal 报表

    我有一份报告 我想将其显示在网络表单上 没有参数的报告运行良好 带参数的报告让我很头疼 这是我在 BindReport 方法中编写的代码 该代码在表单的页面加载事件上调用 ReportDocument rpt new ReportDocum
  • 本地化 ASP.NET 资源的滑动过期

    假设我们有 2 个站点 myDomain AU 和 myDomain RU 具有相同的代码和本地化资源文件 resx 和 ru resx 我们预计大多数英语用户将使用 AU 网站 大多数俄语用户将使用 RU 网站 但是 如果 AU 域的某些
  • IIS Express 停止 Web 应用程序后立即关闭正在运行的站点

    我在使用 Visual Studio 2012 的第一天 当我想停止 IDE 中的应用程序时 应用程序仍在 IIS Express 上运行 我可以浏览和使用正在运行的应用程序 但现在不能了 如果我按下停止按钮 IIS 会立即关闭应用程序 因
  • 如何以编程方式将 SMTP 服务器详细信息存储(保存)回 web.config

    搜索 StackOverflow 我发现这个问题是关于如何从 Web Config 检索 SMTP 设置 https stackoverflow com questions 2019175 how to programmatically r
  • 使用 ASP.NET MVC Linq To SQL 进行验证:如何避免编辑生成的源?

    我正在阅读一些关于验证的文档ASP NET MVC 忽略那些建议重新发明轮子编写自己的验证逻辑的人 大多数文章提倡使用xVal或数据注释验证器 两者都允许通过装饰模型的属性 进行声明性验证 我想我会去xVal 因为它似乎是最受建议的 因此
  • 回发后,asp.net 文本框不会填充

    我使用 ASP NET 和 C 几个文本框来计算输入的结果 Textbox2 输入了一个值 单击按钮后 Textbox1 就会被填充 我第一次输入该值时效果很好 但是第二次更改 Textbox2 中的值时 我发现在单击按钮进行调试时该值被分
  • 如何在 ASP.NET 中实现 PayPal Express Checkout? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我如何在 ASP NET 中创建快速
  • 对 URL 进行编码 C#

    所以我有一个看起来像这样的 URL http www test com folder1 id 3 但基本上 当他们单击按钮时 我想在 URL 栏中显示与该 id 关联的值的名称 例如 id 3 是名为 Rollex 的手表 所以我想要读取
  • ASP.NET Core 会话超时

    我记得我们在 ASP NET 中使用了 session timeout 来更改会话超时 如果不更改 则为 20 分钟 我尝试在 Startup cs 中更改 ASP NET Core 3 1 中的会话超时 但没有任何反应 我对操作员使用身份

随机推荐

  • Angular $compile 与所需的控制器

    我有一个复合列表指令 即 一个列表项 它本身可以是一个列表 父指令定义控制器 directive parent function controller function scope link function scope element a
  • 如何像 pdf 文件一样下载 jpg 图像?

    我请求以与 pdf 文件相同的方式下载 jpg 图像 目前 如果我将 jpg 图像作为链接添加到网页 它将在另一个浏览器窗口中打开 而不是实际下载到用户计算机 但是 pdf 文件可以 这是标准代码 a href images my imag
  • 为什么 QGridLayout 小部件在添加新小部件时会移动?

    我似乎无法理解它们是如何工作的 放置多个小部件的最佳方式似乎是 QGridLayout 但是当我将某些内容添加到特定的行 列中 然后决定将某些内容添加到另一行 列中时 一切都会发生变化 这真的很令人沮丧 例如 我什至无法做像谷歌主页这样简单
  • 生成遵循分布的平滑随机数

    我有两个变量 我们称它们为x and y 绘制时是图中分散的蓝点 我已经使用 Scipy 中的 curve fit 拟合了它们 我想生成 假设 500000 平滑 复制分布的随机数 然后x and y By 平滑 我的意思是 我不想要完全复
  • 根据输入调整函数中的sql语句

    这事有点紧急啊 我正在尝试进行一个简单的过滤器搜索 您可以从一系列 3 个下拉列表中进行选择 然后基于此显示结果 我将如何调整每个下拉列表的 sql 查询 如果您要只选择从 3 个中的一个搜索 而不是从全部 3 个中搜索 等等 例如 可能存
  • 如何使用jQuery动态添加表单元素

    这是我的html div div class controls controls row div div
  • Chrome 控制台显示“导航到 http://localhost...”

    Chrome 控制台显示 导航到http localhost http localhost 用蓝色字母 Image 这是 Chrome 上的一项功能 当您选中 保留日志 选项时 可以分隔页面日志 如果您取消选中该框并重新加载页面 它不应显示
  • SCA 相对于 Spring 的优势?

    我有使用 Spring 开发 java web 应用程序的经验 但在 SOA 领域却没有那么多经验 我正在阅读有关 SCA SCA4J http www service conduit org user guide pdf http www
  • 如何使用比较器对ArrayList进行排序? [复制]

    这个问题在这里已经有答案了 我有一个实现静态方法的班级学生 public static Comparator
  • 如何在 PythonAnywhere 上部署 web2py?

    我如何启动并运行一个基本的 web2py 服务器Python无处不在 http www pythonanywhere com 更新 29 05 我们现在在网络选项卡上有一个大按钮 可以为您完成所有这些操作 只需点击它说的地方Web2Py 填
  • 在C#中,子类继承基类的“using”指令吗?

    假设我们有一个基类Rectangle和一个派生类Square namespace Shapes using System Foo public class Rectangle public Rectangle int l int w nam
  • 防止 Firestore 规则中的重复条目不起作用

    我尝试使用 Google Firestore 规则防止重复条目 但它不起作用 我正在尝试的规则是 service cloud firestore Prevent duplicate messages match databases data
  • 使用 Adob​​e Flex Builder 构建 iOS 应用程序 - 性能问题

    我正在使用 Adob e Flex builder 构建一个 iOS 应用程序 并使用 Adob e 的工具将其编译为 ipa 通过初步测试 我发现最终结果并不像本机代码那样丰富 也不那么快速或流畅 不要简单地说 为什么不直接使用 Obje
  • @PostFilter 和 @PreFilter 在 Spring Security 中如何工作?

    作为 Spring 安全注释的新手 我需要对以下代码进行澄清 PostFilter hasPermission filterObject READ or hasRole ROLE ADMIN public List
  • CDI 适用于常规 Java 应用程序吗?

    我有一个简单的 Maven 项目 包含三个类 在我的META INF我有我的空beans xml 每次我运行我的Main java我得到一个NullPointerException Exception in thread main java
  • 删除的 zip 文件会导致 e.Data.GetData("FileContents") 引发异常

    我正在尝试在 WPF 应用程序中为从 zip 存档中拖动的文件实现一个处理程序 处理程序应获取文件内容以进行进一步处理 我的环境 Windows7 安装7 zip Visual Studio 2012 Express Net 4 5 下面是
  • CakePHP 多重选择“选定”不起作用

    我的编辑表单中有一个多重选择输入 当回声时 selected变量将如下所示 MySQL PHP 但是 输入不会自动选择与标签匹配的选项 但是 当我手动输入所选选项时 它会自动选择这两个选项 例如
  • 亚马逊AWS通过Java API创建EBS(弹性块存储)

    我正在尝试找到一种方法来创建新的 EBS 并通过 AWSJavaSDK 以语法方式将其附加到正在运行的实例程序 我看到了使用命令行工具和基于休息的调用来做到这一点的方法 但没有办法通过正确的 SDK 你应该能够使用创建卷 http docs
  • Azure AD 与 sonarqube 集成

    我使用 nginx 反向代理在 https 上运行 sonarqube 这是我的 nginx 反向代理配置 server server name sonarqube mydomain co in access log var log ngi
  • ASP.net 模型视图演示器值得花时间吗?

    我这个周末正在阅读有关 ASP net MVP 模式的内容 似乎即使是最简单的任务也会花费太多精力 如果以 MVP 模式进行 回报似乎是在更大的项目中 但我想 如果我将会追随MVP 为什么不直接用 ASP net MVC 来做这个项目呢 我