问题标签 [presentation-model]

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 投票
1 回答
818 浏览

asp.net - 您如何将演示模型与 Web 表单一起使用?

我已经开始使用带有 ASP.NET 网络表单的演示模型,并且非常喜欢这种模式。我真正遇到的问题是在哪里实例化我的一些类,主要是表示模型、我的业务对象以及下拉列表的数据之类的东西。所以我可以使用一些技巧或演示模型的完整示例(到目前为止我只找到了一些片段)。

0 投票
4 回答
462 浏览

asp.net - 与 DataSet 模型相比,XML 数据模型有哪些优势?

在我目前的工作中,我们有一个基于 .NET/SQL Server 的 CMS 系统。在为一些内部使用定制几个模块时,我有点惊讶地发现,API 没有通过绑定到 DataGrid/DataList/Repeater 控件的典型结果集返回数据,而是返回 XML节点/集合,然后将其传递给 XSLT 转换并以这种方式呈现在页面上。

使用这样的模型有什么好处?

0 投票
2 回答
488 浏览

apache-flex - 在表示模型中处理客户端域对象状态

我目前正在使用演示模型模式构建 Flex/PHP 项目的客户端。

我想要实现的目标:
我目前有一个视图显示有关名为 Node.js 的域对象的不可编辑信息。根据节点是否可编辑以及用户是否具有正确的权限,可以在其中更改此对象的附加视图可用。一旦用户决定“保存更改”,所做的任何更改才会提交给服务器。如果对 NodeA 进行了更改并且用户导航到不同的 NodeB 而不保存它们,则 NodeA 将恢复到其原始状态。

设计:
我有一个信息视图的 PM,其中包含对当前节点的引用。编辑视图的 PM 是从这个 info PM 扩展而来的,添加了对包装的 Node 对象进行更改的方法。两个 PM 都注入了​​相同的节点引用,并且 info/edit 视图中的所有字段都通过它们的 PM 绑定到节点。

问题:
当用户对 NodeA 进行更改但没有提交时,我似乎想不出一个优雅的解决方案来恢复到原始状态。基本上,到目前为止我想到的是在编辑 PM 上保存单独的值副本,或者克隆创建一个新的节点引用,或者通过一组相同的节点属性。在这两个中,前者似乎是更好的主意,因为 Node 已经包含域逻辑,但我想知道创建唯一域对象的克隆是否是一种不好的做法,即使它在有限的范围内使用。

0 投票
4 回答
1013 浏览

viewmodel - ViewModel 模式最大的痛点是什么?

Glenn Block 和我一直在研究 ViewModel 模式。我们一直在尝试确定与该模式相关的最大痛点,目标是添加框架支持以减轻痛苦。

今晚,格伦发布了“查看模型”——这部电影,投出你的一票。我们希望收到你的来信。请在此处发布(并投票)关于实现 ViewModel 模式(也称为 Model-View-ViewModel 或 MVVM)的最大痛点。告诉我们该框架如何让您的生活更轻松!

我们正在研究 WPF 和 Silverlight。

那么告诉我们,您希望框架做什么来使 ViewModel 更容易?

0 投票
1 回答
1433 浏览

design-patterns - MVP vs. Presentation Model,哪个更好?

更新

MVP 与演示模型,哪个更好(对于桌面应用程序) - 就

  1. 可维护性
  2. 可测试性
  3. 复杂
  4. 灵活性
  5. 关注点分离——更改一个组件(视图、控制器、模型等)对其他组件的影响最小。
  6. 性能(可选)
  7. 内存使用(可选)
0 投票
1 回答
587 浏览

c# - 演示模型

我想从控制器设置表单标签的值。我可以发送 List<String> 作为参数并具有设置单个标签或设置控制器类中每个标签的值的表单吗?我对从表单中提取逻辑的程度感到困惑。

0 投票
1 回答
1387 浏览

wcf-ria-services - 具有一对多或多对多关系的 RIA 服务表示模型

我正在尝试在 RIA 中使用演示模型(在此处此处讨论)。我能找到的所有示例都是简单的平面数据实体,没有 1-many 或 many-many 关系,这是我无法使用的 - 特别是在更新和插入关联关系时。

我可以正常工作的查询 - 我用关联属性(和包括属性,在适当的情况下)标记了我的表示类,并且我对如何将数据加载到客户端并作为实体在那里维护有很好的理解。我还插入了新实体。但是,我遇到了以下问题。对于以下示例,假设我们有简单的专辑和艺术家实体,其中专辑有一个艺术家,而艺术家可以有零到多个专辑。两者都有一个 Name 属性。

  • 在客户端,如果我执行 myArtist.Albums.Add(anAlbum) 或 myArtist.Albums.Remove(anAlbum),则没有任何反应。HasChanges 返回 false。(请注意,myArtist 和 anAlbum 是通过加载实体并迭代以获取对特定实体的引用仅在代码中获得的:我还没有在 UI 或 DomainDataSources 中做任何事情,只是在周围闲逛)。
  • 如果我更新艺术家和 SubmitChanges 上的名称,当在服务器上调用更新方法时,专辑集合为空。

有没有人有任何建议,或者你能指出一个使用更复杂对象的例子吗?

编辑(为后代保留上述内容):好吧,似乎存在第二个问题(在服务器上调用 Update 时对实体或实体集合的引用显示为 null)存在,因为子实体未标记为已更改因此它们不会被序列化并被发回。我知道您可以通过使用 [Composition] 来强制实现这一点,并且我已经让它以这种方式工作,但这不是组合关系,我希望两个实体都是“顶级”实体。如何将实体标记为已更改?

0 投票
1 回答
3469 浏览

wcf-ria-services - RIA 服务:插入多个表示模型对象

我使用 LINQ to SQL 类之上的表示模型通过 RIA 服务共享数据。在 Silverlight 客户端上,我创建了几个新实体(专辑和艺术家),将它们相互关联(通过将专辑添加到艺术家的专辑收藏,或在专辑上设置 Artist 属性 - 任一工作),添加将它们放到上下文中,并提交更改。

在服务器上,我收到两个单独的插入调用 - 一个用于专辑,一个用于艺术家。这些实体是新的,因此它们的 ID 值都设置为默认的 int 值(0 - 请记住,根据我的数据库,这可能是数据库中的有效 ID),因为据我所知,您没有设置 ID对于客户端上的新实体。如果我通过我的 RIA 服务将 LINQ 传输到 SQL 类,这一切都可以正常工作,因为即使专辑插入包含艺术家并且艺术家插入包括专辑,两者都是实体并且 L2S 上下文可以识别它们。但是,对于我的自定义表示模型对象,我需要将它们转换回 LINQ to SQL 类来维护过程中的关联,以便可以将它们添加到 L2S 上下文中。

简而言之,据我所知,这是不可能的。每个实体都有自己的 Insert 调用,但您不能只插入一个实体,因为没有 ID,关联就会丢失。如果数据库使用 GUID 标识符,那将是另一回事,因为我可以在客户端上设置这些标识符。

这是可能的,还是我应该追求另一种设计?

0 投票
4 回答
609 浏览

.net - 在后面的代码中使用 Presentation Model 的主要缺点是什么?

我正在努力让自己准备好接受以下问题的挑战:

“为什么我们不能在后面的代码中实现表示模型?”

事实上,我参与过一个项目,我们使用了在后面的代码中实现的演示模型。它工作得相当好,我们甚至能够在它上面运行单元测试。是的,您在单元测试中依赖于 WPF……但它确实有效!

那么,使用代码背后的主要缺点是什么?

我确实更喜欢独立 ViewModel (MVVM) 的想法,但目前我觉得无法向客户证明它的合理性。

0 投票
2 回答
698 浏览

extjs - 如何最好地在 Web 应用程序中实现对多个设备的支持

我的客户想要一个支持“所有可能的设备”的业务应用程序。有问题的应用程序本质上是一个网络应用程序和“所有可能的设备”,我相信包括手机、上网本、ipad、其他浏览器支持设备等。该应用程序在它捕获的数据和它执行的其他功能方面有点复杂(报告)。

如果我继续尊重应用程序中日益增加的复杂性,我想它更有可能无法在其他设备上运行。我想知道 Web 应用程序通常如何支持多个设备?是否有多个版本的表示层(就像我多次发现 m.website.com 专门用于移动设备一样)?此外,如果我的应用程序要利用 Java Script、RIA(Flash、SilverLight),那么后果和解决方法是什么?

我的是一个基于 .Net 的应用程序,堆栈还包含 Ext JS Java 脚本库。虽然我肯定会使用它,但考虑到我会在 Java Script 而不是 HTML 中做很多工作,这可能是个问题。

上面的答案可以是描述性的。如果那里已经规定了一些东西,请分享链接。谢谢。