问题标签 [model-view-controller]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
253 浏览

model-view-controller - 重构应用程序

如果你必须修复和稳定一个 MVC 应用程序,你会从哪里开始:模型、控制器还是视图?这些问题在整个应用程序中平均分布,糟糕的编程实践使得添加功能变得困难。该应用程序是用 PHP 编写的,如果它有所作为的话。

0 投票
5 回答
6529 浏览

c# - 如何将 MVC 模式应用于 GUI 开发

我是一名主要的 Web 开发人员,但我对 C++ 和 C# 有很好的理解。但是,最近我编写了一个 GUI 应用程序,并且开始迷失如何处理控制器和视图逻辑之间的关系。在 PHP 中这很容易——我可以闭着眼睛写我自己的 MVC 模式——主要是因为 PHP 是无状态的,你可以根据请求重新生成整个表单。但是在应用程序编程语言中,我很快就会迷失方向。

我的问题是:如何将控制器与视图分开?视图应该附加到来自控制器的事件 - 还是视图应该实现控制器与之交互的接口?

0 投票
4 回答
2923 浏览

model-view-controller - 在 MVC 框架下,其他开发人员会期望哪种目录结构?

通常,MVC 框架的结构类似于:

但是,在 Web 应用程序套件中,我认为将所有模型、视图和控制器聚集在一起可能不是为了清晰起见最好的方法,除非我将系统视为一个应用程序而不是应用程序套件。但是,有些东西将每个“应用程序”联系在一起,例如用户和用户角色的概念。

所以我有三种可能的解决方案:

(1) 做我不想做的事,将每个模型、视图和控制器放在一起,不管它属于哪个应用程序。这将套件视为单个应用程序,因为它们由包括用户在内的多个公共线程捆绑在一起。

(2) 按应用对代码进行分组。

(3) 按类型对代码进行分组,让实用程序代码在所有应用程序之间共享。

有没有我错过的选项?对于未来的开发人员来说,最合乎逻辑的方案是什么?我个人更喜欢 2 和 3,但也许大多数人会期望 1。

0 投票
8 回答
3752 浏览

model-view-controller - 新的 Web 应用程序应该遵循 MVC 还是 MVP 模式?

请注意,我不是问选择哪一个(MVC 或 MVP),而是问是否应该将两者之一用于 Web 应用程序。

我意识到将旧应用程序从其当前设计转换为 MVC 或 MVP 模式可能需要做太多工作。但是,对于新应用程序呢?看起来这些是最流行的架构模式,那么应该选择其中一种吗?如果不是,还有哪些其他模式?

如果您不熟悉 MVC 和/或 MVP,一个很好的问题是“什么是 MVP 和 MVC,有什么区别?” . 它有很多很好的答案,包括指向各个网站的链接,这些网站会分解每个网站。

0 投票
4 回答
11172 浏览

c# - 虚拟目录中的 ASP.NET MVC

我的 Global.asax.cs 中有以下内容

我的 SearchController 看起来像这样

并且 Index.aspx 目前只显示 ViewData["partnerID"]。

我在 Windows XP 上的 IIS 中设置了一个名为 Test 的虚拟目录。

如果我将浏览器指向http://localhost/Test/,那么我会按预期显示 1000。但是,如果我尝试http://localhost/Test/1000我会得到一个找不到页面的错误。有任何想法吗?

在虚拟目录中运行 MVC 是否有任何特殊注意事项?

0 投票
4 回答
4330 浏览

asp.net-mvc - 使用 ASP.Net MVC 绘制图形/水晶报表

我想在 ASP.NET MVC 中将图形添加到我的用户控件中。我希望对如何解决这个问题有一些想法或指南。我四处搜索并没有找到解决此问题的有用答案。我正在考虑做水晶报告,但根据我以前的经验,它们在 ASP.NET 中表现不佳。我只想知道一些解决这个问题的方法。所以我再次尝试做的是从传递给我的用户控件的 ViewDataDictionary 向 MVC 用户控件添加图形。

0 投票
2 回答
572 浏览

php - 您如何决定视图或控制器中是否有某些内容?(Zend 框架)

您如何决定视图或控制器中是否有某些内容?

下面是一些具体的例子:

  • Zend_Captcha:控制器生成验证码并将其传递给视图还是视图生成它?
  • Zend_Alc:视图是否决定视图的一部分是否应该显示给用户,或者您是否有多个视图取决于可用的操作并且控制器选择正确的一个进行显示?
  • Zend_Session:视图是根据会话数据跟踪谁在查看它,还是由控制器解析并作为某种参数呈现给视图?

哪些组件(模型、视图或控制器)应该执行哪些操作的规则或指南是否写在我可以查看的地方?我在 Zend Framework 站点的文档中没有看到这一点。

0 投票
4 回答
1364 浏览

php - 如何在 MVC 中确定我的控制器?

我对 MVC 相当陌生,来自 php 背景,当我需要登录表单之类的东西时,我通过视图设计并创建页面。我会有一个名为 login 的文件。只有当我需要一个新的登录表单来登录不同类型的用户时,这才很糟糕。说管理员。然后,我必须创建一个名为 login-admin.php 或类似性质的新页面。

最近我开始探索 MVC,尤其是框架,我遇到的最大问题是确定你的控制器到底是如何设计的。我被告知要么为每个视图文件路由使用一个控制器,要么根据您的域对象获取控制器。

我知道我可以有一个用户控制器和很多方法来操作该对象,比如用户/添加、用户/编辑、用户/删除、用户/配置文件。但是在这种情况下,似乎一旦您需要不一定适合“域对象”的视图,就很难决定将它们粘贴在哪里。

那么,在确定您的控制器将是什么时,最佳实践是什么?

0 投票
3 回答
3526 浏览

python - Python中的MVC模型结构

我在 Python 应用程序的 MVC 模式的模型部分中构建类时遇到问题。无论我如何处理事情,我都会遇到循环导入。这是我所拥有的:

模型/__init__p.y

  • 应该包含所有模型类名称,以便我可以执行“从模型导入用户”,例如从控制器或单元测试用例

模型/数据库.py

  • 持有数据库类
  • 需要导入所有 Model 类来做 ORM
  • 初始化应该在第一个模块导入时执行,即没有额外的初始化调用或实例化(数据库类上的所有方法都是@classmethods)

模型/用户.py

  • 包含用户模型类
  • 需要访问数据库类进行查询
  • 应该从所有模型类共有的基类继承以共享功能(数据库持久性方法、参数验证代码等)

我还没有看到使用 MVC 的真实世界 Python 应用程序,所以我的方法可能是非 Pythonic(并且可能是与语言无关的混乱......) - 关于如何解决这个问题的任何建议?

谢谢,西蒙

0 投票
2 回答
893 浏览

model-view-controller - 视图内的跨组件通信 (MVC)

有哪些最佳实践可以协调 View 中的复杂组件之间的交互?

我说的不是组合框或网格控件之类的简单小部件,而是由多个小部件组成的组件,它们可能值得单独进行单元测试。

你会:

  1. 为每个组件定义抽象接口,让控制器通过依赖注入将它们连接起来,让它们通过方法调用直接相互通信?因此,组件知道其他组件的接口。
  2. 定义每个组件可以触发的事件让控制器直接通过事件监听器将它们连接起来?因此,组件具有附加到其他组件的事件接收器的事件处理程序。
  3. 为每个组件定义抽象接口,定义它们可以触发的事件和让控制器监听所有事件并在接口上执行方法调用?因此,这些组件与其他组件完全无关。
  4. 观察者模式的经典应用?
  5. 还要别的吗?

更新:我已经从 #1-3 中删除了“让控制器 ...”,因为在这些情况下,不一定是控制器必须执行路由/编排。它可能是视图本身。

我在最近的一个项目中采用了方法#3,我对组件的解耦和单独的可测试性感到满意。但是,我有一种感觉,我可以简化组件的布线。在我的例子中,主 View 对象必须在每个组件上添加多个事件侦听器,然后在有时进行一些本地处理(例如与模型交谈)之后调用适当组件上的方法。添加事件处理程序的代码看起来有点乱,我特别在寻找一种干净的方式来做到这一点。