【问题标题】:asp.net mvc property changed eventasp.net mvc 属性更改事件
【发布时间】:2012-09-12 09:48:40
【问题描述】:

我是一名 .Net 桌面应用程序开发人员,正在尝试切换到 ASP.Net MVC(3 或 4 无关紧要)。我们有一个.Net 库,它通过Property Changed Events(或我们认为对此有必要的任何其他自定义事件)通知您想要添加此assembly 的任何GUI

这甚至可能不是一个相关的问题,因为它在ASP.Net MVC 中可能完全不同,但是在从程序集收到Property Changed Event 后如何在客户端的浏览器中更新View在你的服务器上?顺便说一句,我们自己生成这些事件。这些程序集是我们自己的。

我已经阅读了有关Partial Views 的信息,但我需要对此进行调查。我遇到的任何事情都显得那么麻烦。因为它在桌面开发中非常直接和简单。所以我开始怀疑Property Changed Events 是否是为 Web 开发时要走的路。

想法?链接?来源?我有兴趣。

p.s.:查看标签以进一步了解我的目标。

【问题讨论】:

  • 看这里:codeproject.com/Articles/322154/…。您可以使用 signalR 将数据从服务器发送到客户端,并使用敲除以轻松更新视图上的属性。
  • 感谢您的回复,顺便说一句。我会调查的。

标签: asp.net-mvc inotifypropertychanged asp.net-mvc-partialview


【解决方案1】:

HTTP 世界完全不同
您从 server(Asp.Net MVC) 请求某些内容,然后您从服务器得到响应。
服务器无法与用户联系**
因为asp.net服务器在响应后不会在内存中保留任何内容
所以在这里你在两个方面是错误的
1. property changes - 因为响应后服务器内存中没有任何内容,因此没有 models(Objects) 所以 whoz 属性实际上没有任何变化
2. 即使你保持一些静态的东西如果改变了你也没有办法联系客户回来

**有一些可用的框架可以让您联系客户,他们通过socketscomet 这样做

【讨论】:

  • “你错了”?说起来很奇怪,但我暂时忽略它。
  • 我正试图围绕整个客户端-服务器架构展开思考,这对于长时间的桌面开发人员来说是很困难的。我一方面理解无国籍状态。但另一方面,您可以将对象集合放入会话中,以便于访问并减少往返次数。其中一个对象可以通知我需要更新视图中的值。我看到这不是现在要走的路。这意味着如果您拥有保持状态的 .NET 程序集,则必须完全重写以成为无状态的 Web 开发。如您所知,这有点大。
【解决方案2】:

您需要摆脱桌面(以及相关的 WebForms)开发的事件驱动思维。

MVC 是一种用于分离关注点的设计模式,不会存在紧密绑定的事件,除非您自己进行一些 hack-ish 工作。

但是,您可以通过使用像 SignalR 这样依赖于 Javascript 和打开连接的框架来完成此操作,但事件的概念在 MVC 中不存在。

【讨论】:

  • 是的,我正试图摆脱桌面和网络表单的想法,这就是这个问题的重点。我不想自己做黑客式的工作。我想做被 asp.net MVC 接受的标准。这将我们带到了 SignalR。这被认为是好的做法吗?或者对于陷入困境的桌面开发人员?
  • 没有 SignalR 很好,但我建议您在投入到更高级的功能之前,先阅读asp.net/mvc 的一些教程。你可能会发现你实际上并不需要它。
  • 问题是,我们有很多包含业务逻辑和数据访问逻辑的 .NET 程序集。这些组件保持状态。为了完全接受 MVC 设计原则,我们是否需要使这些程序集无状态?
  • 不,但您应该记住,HTTP 本身是无状态的。因此,无论何时您需要为客户端显示更改,都必须从服务器端推送(通过 SignalR 或类似方法),否则用户必须手动刷新页面。
  • 首先,感谢您的回复。还有一个问题。您会看到许多网站在没有用户输入的情况下更新内容。所以我认为浏览器可以通过从 te 服务器获取信号来刷新页面(或其中的一部分)。这总是用 SignalR 完成的吗?它会为此使用 AJAX 吗?
猜你喜欢
  • 2011-05-09
  • 2012-05-15
  • 2020-01-26
  • 1970-01-01
  • 2011-04-18
  • 1970-01-01
  • 1970-01-01
  • 2017-05-23
  • 1970-01-01
相关资源
最近更新 更多