相关疑难解决方法(0)

BestPractice - 使用域模型混合视图模型

将视图模型与域模型混合是否合理?

所以即视图模型对象包含一些域模型对象(不是相反的方式!)

asp.net-mvc model domain-model viewmodel

9
推荐指数
2
解决办法
3856
查看次数

MVC3视图模型与实体框架模型

不知道怎么解释这个,但是这里......

我使用EF 4.3构建了代码优先数据模型.其中一个类"地址"包含典型的地址数据,街道,城市,州等.模型中的其他类包含"地址"类的实例.

问题.将使用不同的视图收集/呈现数据,其中一些将需要地址字段,而另一些则不需要.

我可以构建不同的视图模型,每个模型都具有必要的验证属性,并在数据模型和视图模型之间来回复制数据,但这似乎是错误的.

我错过了什么?必须有一种更聪明的方法来做到这一点.

谢谢你的帮助,吉米

entity-framework asp.net-mvc-3

7
推荐指数
1
解决办法
2841
查看次数

业务对象应该能够创建自己的DTO吗?

假设我有以下课程:

class Camera
{
    public Camera(
        double exposure,
        double brightness,
        double contrast,
        RegionOfInterest regionOfInterest)
    {
        this.exposure = exposure;
        this.brightness = brightness;
        this.contrast = contrast;
        this.regionOfInterest = regionOfInterest;
    }

    public void ConfigureAcquisitionFifo(IAcquisitionFifo acquisitionFifo)
    {
        // do stuff to the acquisition FIFO
    }

    readonly double exposure;
    readonly double brightness;
    readonly double contrast;
    readonly RegionOfInterest regionOfInterest;
}
Run Code Online (Sandbox Code Playgroud)

...和DTO在服务边界(WCF)上传输摄像头信息,比如在WinForms/WPF/Web应用程序中查看:

using System.Runtime.Serialization;

[DataContract]
public class CameraData
{
    [DataMember]
    public double Exposure { get; set; }

    [DataMember]
    public double Brightness { get; set; }

    [DataMember]
    public …
Run Code Online (Sandbox Code Playgroud)

c# oop dto

5
推荐指数
1
解决办法
1576
查看次数

Backbone ViewModel vs(Data)Model

在骨干中,我可以以不同的方式使用我的模型.

据我所知,(数据)模型用于存储数据(可能来自RESTful Web服务器),ViewModel用于存储有关特定视图的信息(例如隐藏/显示的视图状态).

我的大部分知识来自这个问题.

看完其中,笔者说的文章:

在数据更改时呈现UI,而不是用户交互

流程是:用户交互 - >数据更改 - >视图渲染.

例如,如果我们在音频播放器中编写播放/暂停切换按钮,则流程将为:

  • 用户点击"播放"
  • 模型(数据)状态变为'播放'
  • 视图以"播放"模式呈现

遵循此模式可确保从其他来源(例如快进,新播放列表,网络错误等)触发的状态更改将切换我们的按钮以执行正确的操作.换句话说,我们有一个单一的事实来源:每当我们的模型发生变化时,我们都知道应该渲染我们的按钮.

var PlayPauseButton = Backbone.View.extend({
  tagName: 'li',
  className: 'icon',
  initialize: function(){
    this.model.on('change:status', this.render, this);
  },
  render: function(){
    this.$el.removeClass('icon-play').removeClass('icon-pause');
    this.$el.addClass('icon-' + (this.isPlaying() ? 'pause' : 'play'));
  },
  events: {
    'click': function(){
      this.model.set('status', this.isPlaying() ? 'paused' : 'playing');
    }
  },
  isPlaying: function(){
    return this.model.get('status') === 'playing';
  }
});
Run Code Online (Sandbox Code Playgroud)

我开始怀疑使用每一个的优点和缺点.

假设我们每个视图只有一个模型(我知道我们可以有更多,但是如果我们将它限制为一个).我能想到,

ViewModel专业人士:

  • 文章中提到的那些.
    • 有关视图的信息将保存在模型中,从而防止视图混乱.
    • 状态信息可以在视图之间共享.

缺点:

  • 无法调用Backbone的save()方法,因为这会导致模型将不正确的数据保存到服务器(例如视图状态).
  • 无法轻松调用Backbone的fetch()方法,因为我们可能会践踏我们的视图数据.

(数据)模型专业人士:

  • 使用骨干内置的保存,获取等.
  • 视图可以共享数据,而不必担心存储在其中的视图特定数据.

缺点:

  • 模型只能用于数据 …

javascript jquery mvvm backbone.js

5
推荐指数
1
解决办法
699
查看次数