Questions tagged «model-view-controller»

模型-视图-控制器(MVC)是软件工程中使用的体系结构模式。对于Microsoft ASP.NET MVC,请改用[asp.net-mvc]或[asp.net-core-mvc]标记。对于Spring MVC,请改用[spring-mvc]标签。

24
MVP和MVC有什么区别?
想要改善这篇文章吗?提供此问题的详细答案,包括引文和答案正确的解释。答案不够详细的答案可能会被编辑或删除。 当超越RAD(拖放和配置)构建用户界面的方式时,许多工具鼓励您使用三种设计模式,分别称为Model-View-Controller,Model-View-Presenter和Model-View-ViewModel。我的问题包括三个部分: 这些模式解决了哪些问题? 它们有何相似之处? 它们有何不同?

30
在视图控制器之间传递数据
我是iOS和Objective-C以及整个MVC范例的新手,但我坚持以下几点: 我有一个充当数据输入表单的视图,我想给用户选择多个产品的选项。产品在另一个视图上以列出,UITableViewController并且我启用了多个选择。 我的问题是,如何将数据从一个视图传输到另一个视图?我将把选择保留UITableView在一个数组中,但是如何将其传递回先前的数据输入表单视图,以便在提交表单时将其与其他数据一起保存到Core Data? 我到处逛逛,看到有人在应用程序委托中声明了一个数组。我读了一些有关Singletons的内容,但不了解它们是什么,并且读了一些有关创建数据模型的知识。 什么是执行此操作的正确方法,我将如何处理?

25
MVC和MVVM有什么区别?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 6个月前关闭。 标准“模型视图控制器”模式和Microsoft的Model / View / ViewModel模式之间有区别吗?

5
在MVC中应如何构建模型?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 2年前关闭。 我只是对MVC框架有所了解,而且我经常想知道模型中应该包含多少代码。我倾向于拥有一个具有以下方法的数据访问类: public function CheckUsername($connection, $username) { try { $data = array(); $data['Username'] = $username; //// SQL $sql = "SELECT Username FROM" . $this->usersTableName . " WHERE Username = :Username"; //// Execute statement return $this->ExecuteObject($connection, $sql, $data); } catch(Exception $e) { throw $e; } } 我的模型通常是映射到数据库表的实体类。 该模型对象应该具有所有数据库映射的属性以及上面的代码,还是可以将代码分开以使数据库真正起作用? 我最终会有四层吗?


10
django中业务逻辑和数据访问的分离
我正在Django中编写一个项目,并且看到80%的代码在file中models.py。这段代码令人困惑,并且在一段时间之后,我不再了解实际发生的事情。 这是困扰我的事情: 我发现模型级别(应该只负责处理数据库中的数据)在发送电子邮件,使用API​​到其他服务等方面也很丑陋。 另外,我发现在视图中放置业务逻辑也是不可接受的,因为这样很难控制。例如,在我的应用程序中,至少有三种方法来创建的新实例User,但从技术上讲,它应统一创建它们。 我并不总是注意到模型的方法和属性何时变得不确定,以及何时出现副作用。 这是一个简单的例子。首先,User模型是这样的: class User(db.Models): def get_present_name(self): return self.name or 'Anonymous' def activate(self): self.status = 'activated' self.save() 随着时间的流逝,它变成了: class User(db.Models): def get_present_name(self): # property became non-deterministic in terms of database # data is taken from another service by api return remote_api.request_user_name(self.uid) or 'Anonymous' def activate(self): # method …

8
模型数据和行为放在哪里?[tl; 博士 使用服务]
我正在为最新项目使用AngularJS。在文档和教程中,所有模型数据都放入控制器范围。我知道控制器必须可用,因此必须在相应的视图内可用。 但是我不认为该模型应该在那里实际实施。它可能很复杂,并且具有私有属性。此外,可能要在另一个上下文/应用程序中重用它。将所有内容放入控制器中完全破坏了MVC模式。 任何模型的行为都一样。如果我要使用DCI体系结构并将行为与数据模型分开,则必须引入其他对象来保存行为。这可以通过介绍角色和上下文来完成。 DCI == d ATA Ç ollaboration 我 nteraction 当然,可以使用简单的javascript对象或任何“类”模式来实现模型数据和行为。但是,AngularJS的实现方式是什么?使用服务? 所以归结为这个问题: 遵循AngularJS最佳实践,如何实现与控制器分离的模型?


9
Java EE Web开发,我从哪里开始?我需要什么技能?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意测验或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 我想至少在基本级别上学习如何构建Java Web应用程序(来自.NET背景)。我希望能够从头开始构建,部署一个简单的CMS类型的应用程序。 我到底需要学习什么? Tomcat似乎是Java的良好Web服务器。 网络有哪些选项?我知道在ORM中有Hibernate。 Java是否有MVC?那JSP呢?MVC和JSP可以在一起吗?NetBeans? 也许一本书涵盖了所有这些?

5
我可以在视图中获取当前控制器的名称吗?
有没有办法从视图中找出当前控制器是什么? 例如,为什么我想知道这一点:如果多个控制器共享同一布局,则我可能会在布局ERB文件中有一个部分,我想根据该控制器突出显示当前页面的菜单项。 也许这是一个不好的方法。如果是这样,更优选的方法是什么? 我很想知道有关以哪种方式获取当前控制器名称的信息。 (显然,我可以@controller_name = 'users'在每个控制器中添加类似的内容;但这似乎是Rails在幕后已经做过的事情。所以我只是想知道是否有内置的方法。)

4
就编码C#而言,MVC,MVP和MVVM设计模式之间有何区别?
如果我们使用短语“ MVC,MVP和MVVM设计模式之间的区别是什么”来搜索Google,那么我们可能会获得很少的URL,这些URL会从理论上像MVC MVP和MVVM设计模式之间的区别进行讨论: 最有价值球员 在无法通过数据上下文进行绑定的情况下使用。Windows窗体就是一个很好的例子。为了将视图与模型分开,需要演示者。由于视图不能直接绑定到演示者,因此必须通过接口(IView)将信息传递给视图。 MVVM 在可以通过数据上下文进行绑定的情况下使用。为什么?删除了每个视图的各种IView接口,这意味着需要维护的代码更少。可能使用MVVM的一些示例包括使用Knockout的WPF和javascript项目。 MVC 在视图和程序其余部分之间的连接始终不可用(并且您无法有效地使用MVVM或MVP)的情况下使用。这清楚地描述了Web API与发送到客户端浏览器的数据分离的情况。微软的ASP.NET MVC是管理此类情况的绝佳工具,并提供了非常清晰的MVC框架 但是我还没有找到一篇文章在理论上与示例代码一起讨论差异。 如果我得到一篇讨论这三种设计模式(MVC,MVP和MVVM)与代码之间差异的文章,那将是非常不错的。 我想了解这3种设计模式(MVC,MVP和MVVM)实现的3个类似CRUD应用程序的源代码。这样我就可以遍历代码并了解如何为这三种设计模式(MVC,MVP和MVVM)编写代码。 因此,如果存在任何讨论这三种设计模式(MVC,MVP和MVVM)的代码外观不同的文章,那么请重定向至该文章。

7
从AngularJS中的指令添加指令
我正在尝试构建一个指令,该指令负责将更多指令添加到声明它的元素上。例如,我要建立一个指令,需要增加的照顾datepicker,datepicker-language和ng-required="true"。 如果我尝试添加这些属性然后使用,则$compile显然会生成一个无限循环,因此我正在检查是否已添加所需的属性: angular.module('app') .directive('superDirective', function ($compile, $injector) { return { restrict: 'A', replace: true, link: function compile(scope, element, attrs) { if (element.attr('datepicker')) { // check return; } element.attr('datepicker', 'someValue'); element.attr('datepicker-language', 'en'); // some more $compile(element)(scope); } }; }); 当然,如果我没有$compile该元素,则将设置属性,但不会引导该指令。 这种方法正确还是我做错了?有没有更好的方法来实现相同的行为? UDPATE:鉴于这$compile是实现此目标的唯一方法,是否有一种方法可以跳过第一个编译过程(该元素可能包含多个子级)?也许通过设置terminal:true? 更新2:我尝试将指令放入一个select元素,并且按预期方式,编译运行两次,这意味着预期options 的数量是原来的两倍。

13
什么进入“ MVC”中的“控制器”?
我想我了解MVC的基本概念-模型包含应用程序的数据和行为,视图负责将其显示给用户,控制器负责处理用户输入。我不确定控制器中到底是什么。 比方说,我有一个相当简单的应用程序(我在专门考虑Java,但我想相同的原理也适用于其他地方)。我整理我的代码放入3包叫app.model,app.view和app.controller。 在app.model程序包中,我有一些类可以反映应用程序的实际行为。这些extends Observable和在适当时使用setChanged()和notifyObservers()触发视图更新。 该app.view封装具有一个使用类(或多个类为不同类型的显示器)javax.swing组件来处理的显示。其中一些组件需要反馈到模型中。如果我理解正确,则View应该与反馈没有任何关系-应该由Controller处理。 那么我实际上要在Controller中放入什么呢?我是否public void actionPerformed(ActionEvent e)仅通过对Controller中的方法的调用将其放入视图中?如果是这样,是否应在控制器中进行任何验证等?如果是这样,我如何将错误消息反馈回视图-应该再次通过模型,还是控制器应将其直接发送回视图? 如果验证是在View中完成的,我该在Controller中输入什么? 很长的问题,很抱歉,我只想记录我对过程的理解,希望有人可以为我澄清这个问题!

10
MVC中的业务逻辑
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引文回答。 7天前关闭。 改善这个问题 我有两个问题: Q1。MVC模式中“业务逻辑”到底在哪里?我对模型和控制器感到困惑。 Q2。“业务逻辑”与“业务规则”相同吗?如果没有,有什么区别? 如果您可以举一个小例子来解释,那将是很好的。

5
以最优雅的方式显示弹出窗口
我有这个AngularJS应用。一切正常。 现在,当满足特定条件时,我需要显示不同的弹出窗口,我想知道什么是最好的处理方式。 目前,我正在评估两个选项,但是我绝对会接受其他选项。 选项1 我可以为弹出窗口创建新的HTML元素,然后直接从控制器附加到DOM。 这将打破MVC设计模式。我对这种解决方案不满意。 选项2 我总是可以在静态HTML文件中插入所有弹出窗口的代码。然后,使用ngShow,我可以仅隐藏/显示正确的弹出窗口。 此选项不是真正可扩展的。 因此,我很确定必须有一种更好的方法来实现我想要的目标。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.