1

所以presenter调用模型来获取一些数据。

该数据作为没有格式的 DTO 返回。

假设数据只是一个小数.12

然后演示者是否将数字格式化为百分比?

view.Amount = Math.Round(dto.Amount * 100, 2) + "%";

还是意见的责任?

public decimal Amount 
{
    set 
    {
        txtAmount.Text = Math.Round(dto.Amount * 100, 2) + "%";
    }
}
4

1 回答 1

1

我不使用 C# 和 WebFormsMvp,但我认为您的问题与常见的 MVP 架构非常相关。让我在 WebFormsMvp 范围之外进行解释。P 的唯一职责应该是在 M 和 V 之间进行调解(就如何将 M 数据“传递”给 V 和反之亦然而言),而 V 负责数据如何呈现给用户。

考虑以下场景:您决定删除该txtAmount字段(让我们认为它只是一个文本标签或输入等)以支持某种进度条或简单图表。如果您之前传递了“规范化”数值(因为它们来自您的 M 在您的情况下) - 您仍然可以根据需要替换您的金额视图,因为它们应该接受原始数值。

public interface IView {
    decimal Amount { set; }
}

将上述内容与以下内容进行比较:

public interface IView {
    // How to apply a string to a chart as a data item?
    string Amount { set; }
}

对于后者,您将面临“字符串到十进制”问题,因为Amount属性需要重新处理您的string IView.Amount背部decimal IView.Amount(或更糟:%在实例中解析百分比值丢弃符号等IView以使其成为甚至不知道原始数字类型的数字:它是小数还是整数?)

您也可以将百分比视为人类的 V:百分比视图中的 42% 或 promille 视图中的 420‰ 在模型中仍然是 0.42。

于 2016-04-26T09:17:28.240 回答