Я беру предыдущий вопрос на шаг вперед (см. этот вопрос ), я пытаюсь выяснить, как 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;
, используя его.
- Я упустил
Namespace.ViewModels.MyData
до Processing.
для краткости.
- Я упустил
Submission
для краткости, так как это просто +
, тогда та же логика, что и в Processing
.