Я ищу реализацию MVVM для ASP.NET. Как мне подойти к этому? Можете ли вы предложить какой-либо дизайн, который решает эту проблему, особенно для веб-форм ASP.NET?
Спасибо.
Я ищу реализацию MVVM для ASP.NET. Как мне подойти к этому? Можете ли вы предложить какой-либо дизайн, который решает эту проблему, особенно для веб-форм ASP.NET?
Спасибо.
Посмотрите ASP.NET MVVM на CodePlex.
Автор рамки также немного об этом говорит в Модель представления в действии.
Попробуйте DotVVM.
Он несовместим с Web Forms, но он разделяет его принципы (postbacks, серверные элементы управления и т.д.), он решает их самые большие проблемы (чистый HTML, нет viewstate, testable viewmodels), и он поддерживает как полную .NET Framework (через OWIN) и .NET Core.
Вам даже не нужно писать какой-либо javascript, он использует Knockout JS на фоне, инфраструктура решает все, что касается обмена клиент-сервер для вас.
Он также имеет приятную интеграцию Visual Studio и является открытым исходным кодом.
Представления выглядят следующим образом:
<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 - это чистый класс С#.
public class ContactFormViewModel
{
public string Name { get; set; }
public string Email { get; set; }
public void Submit()
{
ContactService.Submit(Name, Email);
}
}
Многие MVC'ы делают что-то похожее на модель представления в том смысле, что вместо того, чтобы возвращать объекты домена контроллеру, у них есть сплющенная структура данных (модель представления) всех данных, необходимых для этого представления, независимо от того, от того, сколько доменных объектов стоит содержащихся в нем данных. В этом отношении модель представления очень удобна для MVC, и я уверен, что ее можно было бы использовать и в webforms. Тем не менее, я не знаю, как сделать двухстороннюю привязку данных/команду/агрегацию событий, связанную с MVVM в WPF.
Хотя я не знаю каких-либо вложений в webform, вы можете попробовать некоторые из описанных здесь подходов:
Джимми Богард - Как мы делаем MVC
Вот очень интересная статья о том, как делать MVP в winforms:
Замок Виндзор MVP с ASP.NET
Возможно, вы можете создать гибрид этих двух подходов, используя веб-формы.
Взгляните на демонстрацию концепции ViewModel, проделанную просто и ясно Крейгом Шумейкером. Он писал об этом здесь, а пример кода доступен.
https://github.com/Zhestokus/dotNet-ASP.NET.TwoWayModel небольшая библиотека, обеспечивает функциональность для шаблона, такого как MVC/MVVM, без сторонних инфраструктур JavaScript
например вы можете привязать некоторое свойство управления к свойству класса
<asp:TextBox runat="server" ID="tbxEmail" Property="{SubscriberModel.Email=Text}" />