ASP.NET Webforms的MVVM模式?

时间:2009-10-19 09:58:22

标签: asp.net mvvm

我正在寻找ASP.NET的MVVM实现。我该怎么做呢?您能否提出解决此问题的任何设计,特别是对于ASP.NET Webforms?

感谢。

5 个答案:

答案 0 :(得分:10)

看看ASP.NET MVVM on CodePlex

框架作者还在Presentation Model in Action中讨论了它。

答案 1 :(得分:10)

尝试DotVVM

它与Web窗体不兼容,但它分享了它的原则(回发,服务器控件等),它解决了它们最大的问题(干净的HTML,没有viewstate,可测试的视图模型),并且它支持完整的.NET Framework(通过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>

视图模型是纯C#类。

public class ContactFormViewModel 
{
    public string Name { get; set; }
    public string Email { get; set; }

    public void Submit() 
    {
        ContactService.Submit(Name, Email);
    }
}

答案 2 :(得分:4)

许多MVC都在做类似于视图模型的事情,因为它不是将域对象返回给控制器,而是具有该视图所需的所有数据的扁平数据结构(视图模型)它包含多少域对象的数据。在这方面,视图模型非常适合MVC,我确信它也可以在webforms中使用。但是,我无法知道如何在WPF中执行与MVVM关联的双向数据绑定/命令/事件聚合。

虽然我不知道任何网络形式的含义,但您可以尝试这里描述的一些方法:
Jimmy Bogard - How we do MVC

这是一篇关于如何在winforms中进行MVP的非常有趣的文章:
Castle Windsor's MVP with ASP.NET

也许你可以使用webforms创建这两种方法的混合体。

答案 3 :(得分:0)

看看Craig Shoemaker简单明了地完成了ViewModel概念的演示。他在博客上发表了here,代码示例也是available

答案 4 :(得分:0)

https://github.com/Zhestokus/dotNet-ASP.NET.TwoWayModel 小库,为没有第三方JavaScript框架的MVC / MVVM提供模式功能

e.g 您可以将一些控件属性绑定到类属性

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