Применение MVVM к ASP.NET - PullRequest
4 голосов
/ 27 декабря 2010

Я изучаю MVVM и хочу использовать его с ASP.NET.

В некоторых примерах, которые я нашел в Интернете, для просмотра используется XAML.

Есть ли способ использовать обычную страницу ASP.NET вместо XAML для представления?

Вот пример XAML:

<UserControl x:Class="MVVMExample.DetailView"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Grid x:Name="LayoutRoot" Background="White" 
                 DataContext="{Binding CurrentContact}">
        <Grid.RowDefinitions>
            <RowDefinition/>
            <RowDefinition/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
        <TextBlock Text="Name:" HorizontalAlignment="Right" Margin="5"/>
        <TextBlock Text="{Binding FullName}" 
               HorizontalAlignment="Left" Margin="5" Grid.Column="1"/>
        <TextBlock Text="Phone:" HorizontalAlignment="Right" 
               Margin="5" Grid.Row="1"/>
        <TextBlock Text="{Binding PhoneNumber}" 
               HorizontalAlignment="Left" Margin="5" 
               Grid.Row="1" Grid.Column="1"/>
    </Grid> </UserControl>

Спасибо, что уделили время.

Ответы [ 8 ]

6 голосов
/ 27 декабря 2010

Как указывают другие ответы, MVVM работает (в основном) благодаря привязке данных, которая поставляется бесплатно с WPF и Silverlight.

Если вы являетесь веб-разработчиком и хотите продолжить использовать свои навыки asp.net и html, возможно, стоит взглянуть на KnockoutJS - библиотеку javascript, которая обеспечивает привязку данных от просмотра к модели или ViewModel.

5 голосов
/ 27 декабря 2010

Недостатком шаблона MVVM является то, что он хорошо работает только при использовании вместе с действительно мощными механизмами привязки данных (например, в WPF) - я не думаю, что MVVM будет очень эффективен при использовании с веб-формами ASP.NET.

1 голос
/ 07 октября 2013

Вы можете использовать MVVM (с помощью нокаута) на вашем MVC View, а остальное останется MVC.В этом случае у вас будет MVVM в сети, и это хорошее решение.

1 голос
/ 27 декабря 2010

Является ли тестируемость основной причиной желания использовать шаблон проектирования MVVM?Если предположить, что это так, то вы найдете, что MVP лучше подходит для WebForms.Если вы используете Google ASP.NET MVP, вы увидите несколько примеров.Хорошая книга по тестированию приложений ASP.NET в целом находится здесь - http://www.wrox.com/WileyCDA/WroxTitle/Testing-ASP-NET-Web-Applications.productCd-0470496649,descCd-description.html.

В качестве альтернативы, если это новый проект, я бы серьезно отнесся к ASP.NET MVC, потому что тестируемость в WebForms не тривиальнаи это только одна из проблем, с которыми сталкивается ASP.NET MVC.

0 голосов
/ 08 сентября 2016

Попробуйте DotVVM .

Он не совместим с веб-формами, но разделяет его принципы (обратные передачи, элементы управления сервером и т. Д.), Решает их самые большие проблемы (чистый HTML, нетviewstate, тестируемые viewmodels) и поддерживает как полную .NET Framework (через OWIN), так и .NET Core.

Вам даже не нужно писать никакой javascript, он использует Knockout JS на фоне, платформа решаетвсе, что касается связи клиент-сервер.

Он также имеет приятную интеграцию с Visual Studio 2015 и имеет открытый исходный код.

Представления выглядят так:

<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);
    }
}
0 голосов
/ 28 декабря 2013

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

https://github.com/samshiles/MVVM-4-Webforms

0 голосов
/ 29 февраля 2012
0 голосов
/ 27 декабря 2010

MVVM специально разработан для WPF, где вступает в действие привязка данных.

check

Приложения WPF с шаблоном проектирования Model-View-ViewModel

для подробной информации о MVVM

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...