我正在寻找ASP.NET的MVVM实现。我该怎么做呢?您能否提出解决此问题的任何设计,特别是对于ASP.NET Webforms?
感谢。
答案 0 :(得分:10)
框架作者还在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)
答案 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}" />