2012-03-20 35 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 if变成了else,拿出了(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 2012-03-20 20:26:38

+0

任何想法,为什么我必须“解决”'Processing'为'Namespace.ViewModels.MyData.Processing'?我明显有'@ using'语句。 – REMESQ 2012-03-20 20:27:43

+0

而不是放置“@using”语句,你可以简单地使用完全限定名......在你的情况下“Namespace.ViewModels.MyData.Processing”...和si如果这是正确的,并且移动它到@using。 – Romias 2012-03-20 20:46:07

1

如果ProcessingRadioButtons是一个枚举,则需要将它与之比较 - 而不是字符串。试试...... .Equals(Processing.Standard)。

+0

虽然你的回答是正确的,你先回答,但是给了Romias。在这两种情况下,我都必须使用Processing来“解决”命名空间问题,在这种情况下,它的'Namespace.ViewModels.MyData.Processing'。但是你的解决方案不会在视图中显示货币符号'$',我不知道为什么。 – REMESQ 2012-03-20 20:25:57

+1

对我无关紧要。据我所见,我们两人都提出了同样的事情,只有不同的平等比较风格。货币符号的显示与if语句无关,但与DisplayFor函数的使用方式无关。很高兴它为你解决,但! – 2012-03-20 21:57:47

+0

http://stackoverflow.com/questions/9797715/how-can-i-sum-two-different-selections-passed-to-model。开始了这个问题,然后在工作中陷入困境,我忘了问我的问题的第二部分(请注意,我在这里更改了标题) – REMESQ 2012-03-21 02:11:40