2017-02-07 5 views
0

宿題の割り当て。C#MVC asp.netモデルの解析。

私はhtmlページに簡単な追加フォームを吐き出すモデルを持っています。ビューモデルは、例えば(必要な値を処理するために書かれている:。[Required(ErrorMessage = "Missing a number, please enter decimals to add.")]

しかし、Domainモデルでは、私が入力した値が正または負のいずれか小数点以下の値が(であることを確認するために、2つの入力フィールドをTryParseする必要があります)I TryParseParseなどの方法を知っていますが、実際にエラーメッセージが表示されるように例外を回避することはできません(上記の「Missing a number」を参照)。私はこれをはじめ多くのサイトを検索しました:

などなど...任意の助けいただければ幸いです。

public class MyAbacusDomainModel 
{ 
    public MyAbacusDomainModel(string number1, string number2) 
    { 
    Number1 = number1; 
    Number2 = number2; 
    Sum = CalculateSum(number1, Number2); 
    } 

    public string Sum { get; set; } 
    public string Number1 { get; set; } 
    public string Number2 { get; set; } 

    // need to parse the two number values here to get the boolean results 

    private string CalculateSum(string number1, string number2) 
    { 
    double number1double = Convert.ToDouble(number1); 
    double number2double = Convert.ToDouble(number2); 
    double sum = (number1double + number2double); 
    return sum.ToString();  
    }    
} 
+5

なぜ文字列内に数値を格納するのか説明できますか? Number1/2をdouble/decimalとして宣言してみませんか? – Steve

+0

'contracts'を使用していますか? – Hackerman

+0

割り当てには文字列(数字のみ)のコードスニペットがありましたが、インストラクターは指示を与えていないので、それを二重に変換していますが、それでも例外を越えようとしています。 –

答えて

0

これは役に立ちますか?

decimal number; 

// Parse a floating-point value with a thousands separator. 

var value = "1,643.57"; 

Decimal.TryParse(value, out number); 
1

viewmodelプロパティをdoubleにすることはできますか?必須および範囲属性を持つタイプを入力します。

コントローラのアクションでModelState.IsValidがtrueの場合、値が常に適切な値になるため、ホイールの値がdoubleであることを確認する必要はありません。

[Required] 
public double? Number {get; set;} 

ドメインモデルで文字列値を使用する必要がある場合は、入力を文字列に解析できます。常に2重の値になりますので、追加のチェックをする必要はありません。

あなたの宿題にそのような要件がない場合は、ドメインモデルの値を格納するタイプを変更することをお勧めします。数字を文字列として保存するのは珍しいことです。