0

SO上的人经常说:“AViewModel 持有可以由视图执行的方法,用于指示如何切换视图元素的属性等......”

当我ViewModel作为 WebApi 响应发送到序列化到的客户端时JSON,如何ViewModel在客户端上执行方法?

这对我来说根本不清楚。

4

2 回答 2

0

您至少可以通过两种方式理解视图模型

  • 不是将您的业务对象传递给视图(例如 MVC Razor 视图),而是传递包含此视图所需属性的精简对象,仅此而已。当视图设计器使用从数据库中延迟加载的字段时,视图创建更容易并且您避免出现问题(避免Select N+1 问题和其他问题)

  • 您可以创建将在客户端使用的视图模型(在 Javascript 中)。您在 Javascript 中将其创建为对象,因此它可以包含视图可以调用的方法。您所描述的(使用 WebAPI 发送 JSON 对象)只是将提供该视图模型的数据。例如,您可以在此处的主页上查看knockoutjs。您可以看到包含门票数组的门票视图模型。在此示例中,您可以看到在 viewmodel 中硬编码的三种票证。但是你可以像你描述的那样从 WebAPI 获取它们作为 JSON。下载它们后,只需将它们放在这个数组中。

于 2013-02-26T19:49:13.753 回答
-1

DTO(数据传输对象)包含可消耗格式的数据。ViewModel/ActionModel 包含为 View 使用而格式化的数据。

DTO 可能如下所示:

public class OrderDTO
{
    public decimal Price { get; set; }
    public int Amount { get; set; }
}

虽然 ViewModel 可能看起来像:

public class OrderViewModel
{
    public decimal Price { get; set; }
    public int Amount { get; set; }
    public string PriceBackgroundColor { get; set;}
    public Uri ImageUri { get; set; }
}
于 2013-02-26T19:50:15.637 回答