【问题标题】:MVVM pattern for ASP.NET Webforms?ASP.NET Webforms 的 MVVM 模式?
【发布时间】:2009-10-19 09:58:21
【问题描述】:

我正在寻找 ASP.NET 的 MVVM 实现。我应该如何处理这个?你能提出任何解决这个问题的设计,特别是针对 ASP.NET Webforms 吗?

谢谢。

【问题讨论】:

    标签: asp.net mvvm


    【解决方案1】:

    看看ASP.NET MVVM on CodePlex

    框架作者在Presentation Model in Action也略谈了一下。

    【讨论】:

      【解决方案2】:

      试试DotVVM

      它与 Web 窗体不兼容,但它共享它的原则(回发、服务器控件等),它解决了它们最大的问题(干净的 HTML、无视图状态、可测试的视图模型)并且它支持完整的 .NET 框架(通过OWIN) 和 .NET Core。

      您甚至不需要编写任何javascript,它在后台使用Knockout JS,该框架为您解决了所有有关客户端-服务器通信的问题。

      它还有一个不错的Visual Studio integration,它是开源的。

      视图如下所示:

      <div class="form-control">
          <dot:TextBox Text="{value: Name}" />
      </div>
      <div class="form-control">
          <dot:TextBox Text="{value: Email}" />
      </div>
      <div class="button-bar">
          <dot:Button Text="Submit"
              Click="{command: Submit()}" />
      </div>
      

      并且viewmodel是纯C#类。

      public class ContactFormViewModel 
      {
          public string Name { get; set; }
          public string Email { get; set; }
      
          public void Submit() 
          {
              ContactService.Submit(Name, Email);
          }
      }
      

      【讨论】:

        【解决方案3】:

        许多 MVC 人员正在做类似于视图模型的事情,因为它们不是将域对象返回给控制器,而是具有该视图所需的所有数据的扁平数据结构(视图模型),无论它包含多少域对象的数据。在这方面,视图模型非常适用于 MVC,我相信它也可以在 Web 表单中使用。但是,据我所知,没有办法在 WPF 中执行与 MVVM 相关联的两种数据绑定/命令/事件聚合。

        虽然我不知道任何网络表单的实现,但您可以尝试此处描述的一些方法:
        Jimmy Bogard - How we do MVC

        这里有一篇非常有趣的文章,介绍如何在 winforms 中做 MVP:
        Castle Windsor's MVP with ASP.NET

        也许您可以使用网络表单创建这两种方法的混合体。

        【讨论】:

        【解决方案4】:

        查看由 Craig Shoemaker 简单而清晰地完成的 ViewModel 概念演示。他在博客上写了here,代码示例也是available

        【讨论】:

          【解决方案5】:

          https://github.com/Zhestokus/dotNet-ASP.NET.TwoWayModel 小库,无需第三方 JavaScript 框架即可为 MVC/MVVM 等模式提供功能

          例如 您可以将一些控件属性绑定到类属性

          <asp:TextBox runat="server" ID="tbxEmail" Property="{SubscriberModel.Email=Text}" />
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-01-20
            • 1970-01-01
            • 1970-01-01
            • 2014-11-28
            • 1970-01-01
            • 1970-01-01
            • 2010-11-01
            • 1970-01-01
            相关资源
            最近更新 更多