【发布时间】:2014-09-23 18:32:26
【问题描述】:
基本上,我正在创建一个可移植类库,并创建一堆 ViewModel:
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 应用程序吗?
我真的不想拥有一个客户端 MVVM javascript 库,它只是我的视图模型的重新编码版本。
【问题讨论】:
-
好吧,如果你想使用 that ICommand,你必须依赖 WPF 程序集。但是,它只是公开了 CanExecute 和 Execute 方法。所以,从初级的角度来看,是的,你可以在 MVC 中使用它。要将它连接到 HTML 前端,当然不是——它是 .NET,而 HTML 使用 JavaScript。
-
使用 knockout.js 映射插件是一种非常好的方法,可以大大节省您在 javascript 中重新创建 C# 视图模型的工作
-
MVVM 的可测试性优于可重用性。这种情况很糟糕,必须实施:/
-
@PeterRitchie 从 .NET 4.5 开始,ICommand 位于 System.dll 中,因此您无需引用 WPF 程序集。
标签: c# asp.net-mvc mvvm portable-class-library icommand