代码之家  ›  专栏  ›  技术社区  ›  this. __curious_geek

用于ASP.NET Web窗体的MVVM模式?

  •  27
  • this. __curious_geek  · 技术社区  · 15 年前

    我正在为ASP.NET寻找一个MVVM实现。我该如何处理?您能否提出任何设计方案来解决这个问题,特别是针对ASP.NET Web窗体?

    谢谢。

    5 回复  |  直到 7 年前
        1
  •  10
  •   animuson    13 年前
        2
  •  10
  •   TomáÅ¡ Herceg    7 年前

    尝试 DotVVM .

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

    您甚至不需要编写任何JavaScript,它在后台使用淘汰的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>
    

    视图模型是纯C类。

    public class ContactFormViewModel 
    {
        public string Name { get; set; }
        public string Email { get; set; }
    
        public void Submit() 
        {
            ContactService.Submit(Name, Email);
        }
    }
    
        3
  •  4
  •   Daniel Auger    15 年前

    许多MVC用户正在做类似于视图模型的事情,从某种意义上说,他们没有将域对象返回到控制器,而是拥有该视图所需的所有数据的扁平数据结构(视图模型),而不管该视图包含多少域对象。在这方面,视图模型在MVC中非常可行,我相信它也可以在WebForms中使用。但是,我不知道如何执行与WPF中的MVVM相关联的双向数据绑定/命令/事件聚合。

    虽然我不知道任何WebForm的实现,但是您可以尝试下面介绍的一些方法:
    Jimmy Bogard - How we do MVC

    下面是一篇关于如何在WinForms中执行MVP的非常有趣的文章:
    Castle Windsor's MVP with ASP.NET

    也许您可以使用WebForms创建这两种方法的混合。

        4
  •  0
  •   rohancragg    10 年前

    请看一下由CraigShoemaker简单而清晰地完成的ViewModel概念演示。他在博客上写了这件事 here 代码示例是 available 也是。

        5
  •  0
  •   Simon    8 年前

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

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

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