2014-09-23 3 views
3

В основном, я создаю портативную библиотеку классов, а также создание кучи ViewModels:Можно ли использовать ICommand в проекте ASP.NET MVC?

public class CustomerViewModel : ViewModelBase 
{ 
    public string FirstName { ... } // INPC 
    public string LastName { ... } // INPC 

    public string FullName 
    { 
     get { return FirstName + " " + LastName; } 
    } 

    public ICommand DoFooCommand { get; private set; } // DelegateCommand 

    private bool CanDoFoo(object parameter) { ... } 
    private void DoFoo(object parameter) { ... } 
} 

Это замечательно, если я хочу для многократного использования для WinRT и WPF приложений, но как я могу воспользоваться этим классом для веб-сайт ASP.NET MVC? Кажется, мне нужно просто обернуть все, что делает этот класс, в контроллер. Кроме того, ICommand даже пригодна для приложения ASP.NET MVC?

Я действительно не хочу иметь клиентскую библиотеку JavaScript MVVM, которая является только перекодированной версией моих моделей просмотра.

+0

Ну, вам нужно будет зависеть от сборок WPF, если вы хотите использовать * эту * ICommand. Но он просто предоставляет методы CanExecute и Execute. Итак, с рудиментарного уровня, да, вы можете использовать его в MVC. Подключить его к HTML-интерфейсу, конечно же, нет - это .NET и HTML использует JavaScript. –

+0

Использование плагина mapping knockout.js - действительно отличный способ в основном сэкономить вам усилия на повторное создание ваших моделей просмотра C# в javascript. – Jedediah

+0

MVVM лучше тестируется, чем повторное использование. Этот сценарий потребует выполнения:/ – Will

ответ

0

Прямое использование этого в MVC ViewModels было бы, по крайней мере, бессмысленным и дисфункциональным. Это связано с тем, что в отличие от MVVM в WPF экземпляр ViewModel не поддерживается во всех взаимодействиях (клики, POST и т. Д.), Но воссоздан. Поэтому весь INPC (INotifyPropertyChanged) не будет работать.

ICommand должен быть включен/отключен на основе других свойств, к которым будет привязываться представление, но привязка данных (так сказать) в MVC является одноразовой (при визуализации), что сделало бы эту концепцию бесполезной, также ,

MVVM и MVC несовместимы, извините. Несколько лет назад я столкнулся с той же проблемой, пытаясь повторно использовать материал на разных платформах, но я не мог. Даже с T4 (текстовыми шаблонами), которые я пытался преобразовать класс (WPF-ish) ViewModel в более приемлемую форму для MVC.