2012-03-21 3 views
0

이전 질문을 한 걸음 더 앞두고 있습니다 (this question 참조). 예를 들어 라디오 버튼 목록과 같이 사용자가 두 가지 이상의 선택을하는 방법을 알아 내려고 노력 중입니다. 사용자가 선택한 항목은 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.ExpeditedSubmission.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); 

일부 노트 : 대답 제안을 바탕으로 , 나는이 일을 오전

  1. priceSolution 나는베이스로 사용할 정적 값이을 (그것은이다 기본 값 플러스 사용자 선택).
  2. ViewModel에 calculated을 사용하고 get; set;을 사용하고 있습니다.
  3. 나는 간략히하기 위해 앞에 Processing.을 입력하지 않았습니다.
  4. 간결함을 위해 Submission을 생략했습니다. 이는 +이고 Processing과 같은 논리입니다. 손 고려하기 전에

답변

0

당신은 선택을 알고 당신의 @if (Model.SubmissionRadioButtions == Submission.Online) 현재 모델에 의해 개최 값에 대한 테스트입니다 -이 단지 POST 후에 경우에도.

이와 같이 이러한 테스트를 수행하는 속성을 뷰 모델에서 만들어 해당 필드를 합산해야합니다.

이 속성은 POST가 있으며,이 건물은 nullable 형식을 반환하고 나 자신을 설명의 의미 실수를 @if(MySum.HasValue) { @Html.DisplayFor(m=>m.MySum) }

+0

와보기를 포장하기 전에 를 표시하지 않으려면. 선택을 알고 있습니다. 예, 특정 사용자가 선택할 수있는 것을 직접 알지 못합니다. 이전에 뷰 모델에서 속성을 만들려고 시도했지만 모든 다른 선택 사항으로 그 속성을 망쳤습니다. 나는 궁극적으로 표시되는 것을 합산하는 더 깨끗한 방법이 있기를 바랐다. – REMESQ

+0

몇 가지 조사가 끝나면 조언을 통해 올바른 답을 얻을 수 있습니다. 감사. 문제의 업데이트를 참조하십시오. – REMESQ

관련 문제