Подтвердить что ты не робот

Шаблон MVVM для веб-форм ASP.NET?

Я ищу реализацию MVVM для ASP.NET. Как мне подойти к этому? Можете ли вы предложить какой-либо дизайн, который решает эту проблему, особенно для веб-форм ASP.NET?

Спасибо.

4b9b3361

Ответ 2

Попробуйте 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);
    }
}

Ответ 3

Многие MVC'ы делают что-то похожее на модель представления в том смысле, что вместо того, чтобы возвращать объекты домена контроллеру, у них есть сплющенная структура данных (модель представления) всех данных, необходимых для этого представления, независимо от того, от того, сколько доменных объектов стоит содержащихся в нем данных. В этом отношении модель представления очень удобна для MVC, и я уверен, что ее можно было бы использовать и в webforms. Тем не менее, я не знаю, как сделать двухстороннюю привязку данных/команду/агрегацию событий, связанную с MVVM в WPF.

Хотя я не знаю каких-либо вложений в webform, вы можете попробовать некоторые из описанных здесь подходов:
Джимми Богард - Как мы делаем MVC

Вот очень интересная статья о том, как делать MVP в winforms:
Замок Виндзор MVP с ASP.NET

Возможно, вы можете создать гибрид этих двух подходов, используя веб-формы.

Ответ 4

Взгляните на демонстрацию концепции ViewModel, проделанную просто и ясно Крейгом Шумейкером. Он писал об этом здесь, а пример кода доступен.

Ответ 5

https://github.com/Zhestokus/dotNet-ASP.NET.TwoWayModel небольшая библиотека, обеспечивает функциональность для шаблона, такого как MVC/MVVM, без сторонних инфраструктур JavaScript

например вы можете привязать некоторое свойство управления к свойству класса

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