13

我想知道 asp.NET MVC 和 MVP 之间的区别,它们都一样吗?下面是我提到的架构图。

(图片网址:http: //msdn.microsoft.com/en-us/library/ff647859.aspx

MVC 与 MVP

我从图中了解到 MVC 和 MVP 之间的主要区别是,在 MVC 中,模型更新视图,而在 MVP 中,演示者更新视图。

但这是我的困惑。下面是一个 asp.net MVC 代码示例。

public class HomeController : Controller
    {
        //
        // GET: /Home/

        public ActionResult Index()
        {
            return View();
        }

    }

这里控制器返回/更新视图,所以现在根据图表它是 MVP

asp.net mvc 和 MVP 类似吗?如果不是有什么区别?有人可以指导我。

4

4 回答 4

8

实际上 MVP 是 MVC 模式的一个子集。

在您的 asp.net mvc 示例中,控制器不会更新视图,而只是将模型传递给视图,然后视图会根据模型进行更新。

但是在 MVP(通常与 Microsoft stack 中的 winforms 和 webforms 一起使用)中,演示者从视图中获取数据,更新模型,当模型更改时,演示者将读取模型并更新视图。

于 2013-11-15T09:09:35.250 回答
3

那个 MVC 图看起来对我有误导性。我认为这是一个更活跃的架构图:

在此处输入图像描述

这是来自一个 PHP 站点,但在这里您可以清楚地看到视图和控制器之间的关系。

MVC 和 MVP 之间的差异是微妙的,这个问题(如上所述)澄清了这些差异。


那个MSDN 页面也清楚地写着

此内容已过时,不再维护。它是为仍在使用这些技术的个人提供的。

我认为这个资源早于 Asp.Net MVC。

这些文章本身是针对称为复合 UI 应用程序块的东西,来自 2005 年。我会去http://www.asp.net/mvc/了解更多关于 MVC 的最新和准确信息。

于 2013-11-15T09:02:01.137 回答
0

不,它们不一样。它们是用于用户交互的两种不同范式(设计模式)。基于这些范例,ASP.NET 团队开发了两种不同的框架来编写 Web 应用程序。第一个是基于事件的表单编程的ASP.NET Web 表单。第二个是基于使用模型视图和控制器 (MVC)的ASP.NET MVC 。

我想您可以从这里开始阅读由 ASP.NET 开发团队成员之一编写的内容。

关于具体问题。我认为控制器使用模型更新视图来做到这一点。模型不做任何事情。或者这就是我的理解方式,无论如何......

希望我有所帮助!

于 2013-11-15T08:59:45.690 回答
0

尝试在不涉及任何技术的情况下理解 MVC 和 MVP 概念。

ASP.NET MVC 控制器中的 Action 方法返回ActionResult 和 View方法不会破坏任何模式。它只是说控制器功能已经完成,让我们使用 Razor/ASP.NET 语法从标记呈现视图。

在 ASP.NET 世界中 - ASP.NET MVC 是 MVC 模式的实现。被遗忘的Web 客户端软件工厂是 MVP 实现

于 2013-11-15T09:11:44.700 回答