Je prends une question préalable un peu plus loin (voir this question), j'essaie de comprendre comment sum
deux (ou plus) sélections faites par l'utilisateur avec, par exemple, une liste de boutons radio. La sélection effectuée par l'utilisateur est liée à une entité qui contient une valeur de devise statique à l'aide des instructions if/else if
.Comment puis-je SOMME deux sélections différentes passées au modèle?
Ce sont les entités pour le prix:
[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;
Donc, si j'ai deux séries de if/else if
déclarations telles que:
@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)
}
et l'utilisateur effectue une sélection dans les deux listes de boutons radio séparés correspondant à Processing.Expedited
et Submission.Manual
, le code affichera respectivement $250.00
et $200.00
.
Je ne peux pas, cependant, comprendre comment sum
ces deux pour afficher $450.00
. Gardez à l'esprit, je ne connais pas les sélections avant la main, donc faire priceProcessingExpedited + priceSubmissionManual
dans une fonction, puis l'appeler ne fonctionnera évidemment pas. Aussi, je fais environ 10-15 d'entre eux mais j'ai seulement utilisé deux simples comme exemple de ce que j'essaie d'accomplir (donc le fait que les deux autres choix sont $0.00
ne veut rien dire parce qu'il y a des prix variables pour autres choix que j'ai laissés de côté).
Une guidance?
MISE À JOUR: Sur la base de suggestion, en réponse, que je fais ceci:
Model.calculated =
Model.priceSolution +
((Model.ProcessingRadioButtons == Processing.Standard) ?
Model.priceProcessingStandard :
(Model.ProcessingRadioButtons == Processing.Expedited) ?
Model.priceProcessingExpedited :
Model.priceProcessingUrgent);
Quelques notes:
priceSolution
est une valeur statique que je l'utilise comme base (c'est la valeur de base plus les sélections de l'utilisateur).- J'utilise
calculated
dans le ViewModel etget; set;
en l'utilisant. J'ai omis leNamespace.ViewModels.MyData
avantProcessing.
pour la brièveté. - J'ai omis
Submission
pour la brièveté car c'est juste un+
alors la même logique que dansProcessing
.
J'ai fait une erreur sémantique en moi-même expliquer. Je connais les choix, oui, je ne sais pas à l'avance ce qu'un utilisateur particulier choisira, c'est ce que je voulais dire. J'ai précédemment essayé de créer une propriété dans le modèle de vue, mais je l'ai mucked avec tous les différents choix. J'espérais juste qu'il y avait une façon plus simple de «résumer» ce qui est finalement affiché. – REMESQ
Après quelques recherches, votre conseil m'a conduit à la bonne réponse. Merci. Voir mise à jour en question. – REMESQ