2013-08-22 3 views
0

저장 프로 시저의 결과를 표시하고 첨부 된 이미지처럼 보이게해야합니다. 나는 다른 양 총 인해 기타 금액과 미결제 금액의 총 합계의 합이 될 것입니다 일부 필드의 총 될 것입니다이Mvc 3 : 모델에서 계산 된 필드 사용 및보기에서 계산 된 필드 표시

public class MyInvoice 
{ 
    public DateTime invoiceDate { get; set; } 
    public string invoiceNumber { get; set; } 
    public double amount { get; set; } 
    public double amountDue { get; set; } 
} 

같이하는 모델을 만들 필요가 알고

내 견해에 하나의 모델 만 전달해야합니다. 내 모델에 계산 된 필드를 포함하려면 어떻게해야합니까? 내보기에서 계산 된 필드에 액세스하고 싶습니다. 내 모델로 인해 다른 금액과 합계를 추가하나요?

나는 또한 나의 행동 결과 방법에 이렇게 쓰지 않으면 안되지만 어떻게 처리해야하는지 잘 모르겠다. 다른 금액과 누계는 데이터베이스에서 나오지 않았기 때문에 만한다.

IEnumerable<MyInvoice> model = _myInvoiceService.GetInvoice() 
return view(model); 

enter image description here

답변

0

당신이 모델로 볼 수는 일반적으로 가지 않을 것이다, 당신은 대신 뷰 모델로 갈 것이다. 이,

List<InvoiceViewModel> model = null; 
foreach(var invoice in _myInvoiceService.GetInvoice()) 
{ 
    model.Add(new InvoiceViewModel { Invoice = invoice }; 
    // etc... 
} 

return view(model); 

마지막 :

public class InvoiceViewModel 
{ 
    public MyInvoice Invoice { get; set; } 
    public double SomeComputedAmount { 
    get { 
     return Invoice.SomeValue + Invoice.OtherValue; 
    } 
    public List<InvoiceLineItem> LineItems { get; set; } 
} 

을 그리고 액션 메소드에서 다음과 일치하는 코드를 변경 : 당신이 값 중 계산할 수있는

이에 대한 보조 클래스를 작성, 당신은 좋아 보기는 InvoiceViewModel의 IEnumerable을 허용합니다.

2

적절한 방법은 ViewModel 생성하는 것입니다 :

public class MyViewModel 
{ 
    public List<MyInvoice> MyInvoices {get; set;} 
    public double OtherAmount {get; set;} 
    public double TotalDue {get; set;} 
} 

그런 다음지도 당신의 InvoicesViewModel에 :

IEnumerable<MyInvoice> model = _myInvoiceService.GetInvoice(); 
var myViewModel = new MyViewModel(); 
myViewModel.MyInvoices = model; 
myViewModel.OtherAmount = //whatever you want here; 
myViewModel.TotalDue = //total due here 
return View(myViewModel);