2012-03-20 12 views
0

if/elseステートメントを使用して、ユーザーが選択した通貨値を出力する必要があります。ような何か:ビューに渡されたモデルでEqualを使用する方法

@if (Model.ProcessingRadioButtons.Equals("Standard")) 
{ 
    @Html.DisplayFor(m => m.priceProcessingStandard) 
} 
else if (Model.ProcessingRadioButtons.Equals("Expedited")) 
{ 
    @Html.DisplayFor(m => m.priceProcessingExpedited) 
} 
else if (Model.ProcessingRadioButtons.Equals("Urgent")) 
{ 
    @Html.DisplayFor(m => m.priceProcessingUrgent) 
} 

しかし、それは私が選択するラジオボタンに基づいて何も表示されていないので、私はif/else if文が間違っていることを知っています。私は最後のelse ifelseに変更し、(Model.ProcessingRadioButtons.Equal("Urgent"))を取り出し、500を表示します(価格エンティティについては以下を参照)。

これは、ラジオボタンのための列挙です:

public enum Processing 
{ 
    Standard, 
    Expedited, 
    Urgent 
} 

そして(ラジオボタンを達成するためにヘルパーを使用して)ラジオボタンエンティティ:

public Processing? ProcessingRadioButtons { get; set; } 

これらは、価格のための実体である:

[DataType(DataType.Currency)] 
[DisplayFormat(DataFormatString = "{0:c}")] 
public decimal priceProcessingStandard = 0; 

[DataType(DataType.Currency)] 
[DisplayFormat(DataFormatString = "{0:c}")] 
public decimal priceProcessingExpedited = 250; 

[DataType(DataType.Currency)] 
[DisplayFormat(DataFormatString = "{0:c}")] 
public decimal priceProcessingUrgent= 500; 

ガイダンスはありますか?

答えて

1

ProcessingRadioButtonsプロパティを設定したモデルを送信していますか?

@if (Model.ProcessingRadioButtons == Processing.Standard) 

を、それは簡単で、魔法の文字列に依存していません:なぜ使用していない、それはさておき

+0

ありがとうございました。あなたの解決策では、通貨記号 '$'を表示することができます。理由がわからない場合は、両方の答えが正しいが、あなたの方がより簡潔である。 – REMESQ

+0

「処理」を「Namespace.ViewModels.MyData.Processing」に「解決」しなければならない理由は何ですか?私は明らかに '@ using'ステートメントを持っています。 – REMESQ

+0

"@using"ステートメントを置く代わりに、あなたのケース "Namespace.ViewModels.MyData.Processing"で完全修飾名を使用することができます...それが正しいものであれば、それを移動してください@使用する。 – Romias

1

ProcessingRadioButtonsが列挙型の場合、それを比較する必要があります。文字列ではありません。 Try ... .Equals(Processing.Standard)代わりに。

+0

あなたの答えは正しいものの、最初に答えたのはRomiasのクレジットです。どちらの場合も、 'Processing'を使って名前空間の問題を解決する必要がありました。その場合、' Namespace.ViewModels.MyData.Processing'です。しかし、あなたのソリューションは、ビュー内に通貨記号 '$'を表示しないだろうし、私は理由が分からない。 – REMESQ

+1

私には関係ありません。私が見る限り、我々は同じことを示唆していました。通貨記号の表示は、ifステートメントではなく、DisplayFor関数がどのように使用されるかに関係します。それはあなたのために働いてうれしい! –

+0

http://stackoverflow.com/questions/9797715/how-can-i-sum-two-different-selections-passed-to-model質問を始めると仕事に巻き込まれてしまいました。質問の2番目の部分を尋ねることを忘れました(ここでタイトルを変更しました)。 – REMESQ

関連する問題