因此,演示者调用模型来获取一些数据。
该数据作为DTO返回,没有格式化。
我们假设数据只是一个小数.12
然后,演示者是否将数字格式化为百分比?
view.Amount = Math.Round(dto.Amount * 100, 2) + "%";
或者是观点责任吗?
public decimal Amount
{
set
{
txtAmount.Text = Math.Round(dto.Amount * 100, 2) + "%";
}
}
答案 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。