2016-04-25 14 views
1

したがって、発表者はモデルを呼び出してデータを取得します。MVPパターンでは、プレゼンターが数値をパーセントにフォーマットしていますか?

このデータは、書式設定なしのDTOとして返されます。

はのは、プレゼンターが、その後パーセントに番号をフォーマットしていたデータは、単に小数点.12

あるとしましょうか?

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

またはビューの責任はありますか?

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

答えて

1

私はC#とWebFormsMvpを使用しませんが、あなたの質問は一般的なMVPアーキテクチャにかなり関係していると思います。私はそれをWebFormsMvpスコープから説明しましょう。 Pの唯一の責任は、MとVとの間の仲介であるべきであり(VのMデータをどのようにVに渡すか(その逆もまた同様)、Vはの責任を負う。データはユーザー。

次のシナリオを考えてみましょう:特定の種類のプログレスバーまたはシンプルな図表のためにtxtAmountフィールドをドロップすることを決めました(テキストラベルまたは入力などと見なしてみましょう)。以前に正規化された数値を渡した場合(あなたの場合はMから来ているので)、生の数値を受け入れるはずだから、希望通りに金額表示を置き換えることができます。あなたは(あなたのstring IView.Amountバックdecimal IView.Amountに手直しする必要Amountプロパティの問題「を小数に文字列」との対面になるだろう、後者の場合は

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

public interface IView { 
    decimal Amount { set; } 
} 

はに上記の比較しますさらに悪いことに:インスタンス内の %符号を破棄してパーセント値を解析すると、元の数値タイプを知らなくても数値に戻ってしまう:それは10進数か整数か?

パーセンテージを人間のVと考えることもできます。パーセンテージビューでは42%、プロミルビューでは420‰ですが、モデルでは0.42です。

+0

これはこれをクリアして完璧な意味を持ちます。ありがとう! – drizzie

関連する問題