问题标签 [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 投票
4 回答
3142 浏览

.net - 将 Cocoa 的 MVC 版本与 .NET 一起使用有什么好处吗?

这里有一张图描述了传统 MVC 和 Cocoa MVC 之间的区别:

Cocoa 设计模式:模型-视图-控制器设计模式

使用 Visual Studio 在 .NET 中以“Cocoa”方式进行操作有什么好处吗?

0 投票
6 回答
209 浏览

php - PHP 与 AWASP 框架

谁在使用 WASP ( http://wasp.sourceforge.net/content/ ) 在现实世界的应用程序中?你有什么印象?好的?坏的?如果您可以提供任何输入,例如与 rails 相比有多好。

我真的在寻找 PHP 的 MVC 框架

更新:我发现 这个比较很好。

0 投票
8 回答
1299 浏览

model-view-controller - MVC 模式是描述角色还是层?

我最近读到一篇文章,说 MVC 模式描述了应用程序中的层。但就我个人而言,我看到 MVC 在应用程序中显示了几个关键角色。

您认为哪个词更适合描述 MVC 的三个主要部分,层或角色?

0 投票
4 回答
415 浏览

model-view-controller - 是否有任何支持多种请求类型的 MVC Web 框架?

在我尝试过的每个 MVC 框架(Rails、Merb、Waves、Spring 和 Struts)中,请求(和响应)的概念都与请求的 HTTP 概念相关联。也就是说,即使有一个作为 Request 超类的 AbstractRequest,AbstractRequest 也有诸如标头、请求方法(GET、POST 等)以及与 HTTP 相关的所有其他内容。

我想通过 SMS、Twitter、电子邮件或我可以为其制作适配器的任何其他媒体来支持请求-响应循环。有没有特别好的框架?

例如,我想到的唯一其他选择是创建一个 Twitter 轮询器,该轮询器在单独的线程中运行并将消息转换为本地 HTTP 请求,然后将响应发送回。

如果有一个很好的多请求媒体框架,路由会是什么样子?在 Rails 中,HTTP 路由看起来像这样:

Twitter 或 SMS 路由看起来如何?正则表达式匹配关键字和参数?

0 投票
2 回答
196 浏览

.net - 文档/视图或复合应用程序架构有哪些好的资源?

最近我一直在研究相对面向数据的应用程序。一般来说,他们往往是由以奇怪方式相关的类表示的数据的编辑器。我一直在通过UserControl为每种类型的对象设置一个来处理它,并且随着选择的更改,程序会为该对象显示适当的编辑器。

我为此制作的“框架”感觉笨重和凌乱。一般来说,我有一个两窗格的界面,左侧是“项目选择”控件,右侧是“工作区”。UI 必须通过确定UserControl要显示的内容来响应项目选择的大部分工作,并实施诸如撤消和询问用户是否要在更改项目之前保存数据等行为可能会变得混乱。这篇文章的灵感来自于我正在与一位同事一起开发的一个很好的“让我们的构建过程更容易”的应用程序,但它真的无法控制,以至于精心设计的重写可能会比当前代码完成的速度更快。 .

通过阅读一些 C++ 书籍,我对文档/视图架构有了初步的了解。我知道 .NET 中更现代的对应物可能是 Composite UI Application 块。问题是除了这些主题的快速演练或操作指南外,我从未见过任何东西。从来不是从“你应该如何为此设计一个应用程序”的观点,而是从“把这个粘贴到应用程序中,你就会明白!”的观点。我花了一两个小时来研究 CAB 文档,但这让我有些困惑。我不喜欢 CAB 主要是因为我很好奇事情是如何在幕后工作的,我想如果在我开始使用框架之前能够实现类似模式的简单版本,我会更感激它。

我真正认为我需要的是一个专注于这个问题的网站或书籍。我似乎没有得到的重要部分是如何将关注点分离到适当的位置;我习惯于用几种方法来设计我的数据类来处理数据,这似乎是控制器对象的工作?您认为哪些资料对介绍该主题有用?我看过很多文章都画了这样漂亮的图表我对这些架构的工作原理有了高级的了解。我认为我从来没有找到合适的资源来教我低级的“如何实现它”部分。

0 投票
6 回答
13827 浏览

asp.net-mvc - 动作命名约定

是否有人为 MVC 中的操作建立了良好的命名约定?我专门研究了 ASP.net MVC,但这是一个普遍的问题。例如,我有一个显示登录屏幕 (Login) 的操作和一个处理来自该页面的登录请求 (LoginTest) 的操作。我对名字不感兴趣,我还有很多申请要写。

0 投票
3 回答
572 浏览

java - 使用 VetoableChangeListener 停止循环通知

我对 a 的设计有疑问VetoableChangeListener。我实现了VetoableChangeListener接口来监听模型类中属性的变化,所以当模型触发时

…我尝试将更改保存在数据库中,这可能会失败(SQLException例如,通过)。如果失败,我会抛出一个PropertyVetoException来恢复模型中的更改。

该模型在一个VetoableChangeSupport(JDK类)中进行委托,当它接收PropertyVetoException到它并通知恢复到ALL时VetoableChangeListener,使用oldValue/newValue交换(后来它重新抛出异常),以便事件再次出现在我的类中,我尝试再次保存在数据库中,等等......

我有一个解决方法,即模型在没有人抛出 a 之前不会改变PropertyVetoException,所以在VetoableChangeListener我首先检查我要保存在数据库中的数据是否不等于模型中的数据,如果它相等我只需忽略更改。

还有其他更好的解决方法吗?

0 投票
6 回答
1008 浏览

php - 托管服务器上的 MVC 框架

这似乎是一个愚蠢的问题,但我想知道如何在托管服务器上使用 MVC 框架。

我正在家里使用 Ubuntu 上的 RoR 进行游戏(尽管速度很慢),并且了解如果我想做一个实时站点,那么我需要使用 Rails 和 Ruby 进行托管。

但是,PHP 框架会发生什么。例如,我在过去看到了关于 CakePHP 的所有内容,但最近我刚刚遇到了Symfony 项目,并且在想如果我有一个服务器堆栈设置我可以在家开发,我将如何去部署任何实时的东西。

我如何在实时服务器上使用 php 命令行,以及如何在另一台服务器上安装框架。

目前这一切都是假设性的,因为我只是在考虑它,但这是我过去想到的一个问题。

问候

0 投票
6 回答
69183 浏览

winforms - 您将如何在 Windows 窗体应用程序中实现 MVC?

我没有开发太多桌面/Windows Forms 应用程序,但我想到使用 MVC(模型视图控制器)模式进行 Windows Forms .NET 开发可能会有一些好处。

有没有人在 Windows 窗体中实现 MVC?如果是这样,您对设计有什么建议吗?

0 投票
3 回答
2569 浏览

ruby-on-rails - 条件重定向的最佳方法?

使用 Rails v2.1,假设您有一个可从多个位置访问的控制器操作。例如,在 Rails 应用程序中,您有一个链接可以从两个不同的视图编辑用户,一个在用户索引视图上,另一个来自另一个视图(假设来自每个页面的导航栏)。

我想知道根据他们单击的链接将用户重定向回正确位置的最佳方法是什么。例如:

示例 1:

  1. 列出所有用户
  2. 在列表中的用户上单击“编辑”
  3. 用户点击表单上的“保存”,控制器重定向回 1。

示例 2:

  1. 用户可以在应用程序的任何页面上,导航栏显示编辑当前用户的链接
  2. 用户点击链接进行编辑
  3. 用户单击表单上的“保存”,当用户单击导航栏中的“编辑”链接时,控制器将重定向回他们所在的任何页面。

我在过去看到它是通过以下方式完成的:

  1. 将参数放置在原始编辑链接上,并带有链接出现的原始控制器/动作。为了使这更干燥,您可以在帮助程序中使用@controller.controller_name 和@controller.action_name。
  2. 控制器将参数保存到会话变量中。
  3. 一旦控制器保存了记录,它就会重定向到会话变量。

我不特别喜欢这个解决方案的是需要将参数添加到视图中的每个适用链接。我想知道是否有办法将这一切都构建到控制器中。

我想的一种更好的方法是:

  1. 在“编辑”操作上放置一个 before_filter 以将引用者(这是否足够可靠?)保存到会话中。
  2. 当点击“更新”时,控制器将重定向到会话变量,然后删除会话变量。

对最好的方法有什么想法吗?