我在进一步探讨前面的问题(请参阅this question),我想弄清楚如何sum
两个(或多个)用户选择的选项,例如单选按钮列表。用户所作的选择与包含使用if/else if
陈述的静态货币值的实体相关联。如何将两个不同的选择合并到模型中?
这些都是实体价格:
[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 priceSubmissionOnline = 0;
[DataType(DataType.Currency)]
[DisplayFormat(DataFormatString = "{0:c}")]
public decimal priceSubmissionManual = 200;
所以,如果我有两套if/else if
语句,如:
@if (Model.ProcessingRadioButtons == Processing.Standard)
{
@Html.DisplayFor(m => m.priceProcessingStandard)
}
else if (Model.ProcessingRadioButtons == Processing.Expedited)
{
@Html.DisplayFor(m => m.priceProcessingExpedited)
}
...
@if (Model.SubmissionRadioButtons == Submission.Online)
{
@Html.DisplayFor(m => m.priceSubmissionOnline)
}
else if (Model.SubmissionRadioButtons == Submission.Manual)
{
@Html.DisplayFor(m => m.priceSubmissionManual)
}
并且用户在两个单独的单选按钮列表选择对应于Processing.Expedited
和Submission.Manual
,代码将分别显示$250.00
和$200.00
。
但是,我不知道如何sum
这两个显示$450.00
。请记住,我不知道之前的选择,所以在一个函数中做priceProcessingExpedited + priceSubmissionManual
,然后调用它显然不起作用。另外,我正在做大约10-15个,但我只用了两个简单的例子作为我想要完成的一个例子(所以其他两个选择$0.00
并不意味着什么,因为有不同的价格我遗漏的其他选择)。
任何指导?
UPDATE: 基于回答的建议,我这样做:
Model.calculated =
Model.priceSolution +
((Model.ProcessingRadioButtons == Processing.Standard) ?
Model.priceProcessingStandard :
(Model.ProcessingRadioButtons == Processing.Expedited) ?
Model.priceProcessingExpedited :
Model.priceProcessingUrgent);
一些注意事项:
priceSolution
是我作为一个基地使用静态值(它是基础值加上用户选择)。- 我在使用
calculated
的ViewModel和get; set;
。 - 为了简洁,我在
Processing.
之前省略了Namespace.ViewModels.MyData
。 - 为简洁起见,我忽略了
Submission
,因为它只是+
,所以与Processing
中的逻辑相同。
认为我解释我自己做了一个语义错误做。我知道的选择,是的,我不知道一个特定的用户会选择什么是我的意思。我以前试图在视图模型中创建一个属性,但是我用所有不同的选择来隐藏它。我只是希望有一种更清晰的方式来“总结”最终显示的内容。 – REMESQ 2012-03-21 12:56:56
经过一番研究,你的建议让我得到了正确的答案。谢谢。查看有问题的更新。 – REMESQ 2012-03-21 16:40:14