在MVP模式中,演示者是否负责将数字格式化为百分比?

时间:2016-04-25 14:24:20

标签: mvp webformsmvp

因此,演示者调用模型来获取一些数据。

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

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

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

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

或者是观点责任吗?

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

1 个答案:

答案 0 :(得分: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的问题(更糟糕的是:解析百分比值,丢弃%符号,依此类推{...} 1}}实例使它成为一个数字甚至不知道原始数字类型:它是小数还是整数?)

您可能还会将百分比视为人类的V:百分比视图中42%或者Promille视图中的420‰仍然是模型中的0.42。

相关问题