2010-06-03 5 views
3

저는 기술을 배우기 위해 MVC 애플리케이션을 가지고 놀고 있습니다. 나는 당좌 예금 계좌를 추적하는 수표 등록 신청서를 조롱하고 있는데, 은행을 개설 한 것과 그렇지 않은 것은 무엇인가요? 내 모델에 EF를 사용하고 있으며 편집, 작성 등 모든 작업이 올바르게 작동하는 것 같습니다. 그러나 맨 위에 두 개의 합계가 있습니다. 하나는 은행의 잔고를 보여주고 다른 하나는 실제 잔액을 보여줍니다. 그것은 대부분의 시간을 작동하지만 내가 할 때 편집의는 항상 정확하게 새 총을 반영하지 않으며, 나는 매번 변경이되어 업데이트해야합니다 (문제 은행 클리어 할 때 예) :MVC ViewData는 어떻게 작동합니까?

[Authorize(Roles = "admin, checkUser")] 
public ActionResult Index() 
{ 
    var resultSet = from myChecking in chk.tblCheckings 
        orderby myChecking.id descending 
        select myChecking; 

    ViewData.Model = resultSet.Take(45).ToList(); 

    //for balances 
    var actualBalance = from theChecking in chk.tblCheckings 
        select theChecking.deposit - theChecking.withdrawal; 

    var bankBalance = from theChecking in chk.tblCheckings 
         where theChecking.cleared == true 
         select theChecking.deposit - theChecking.withdrawal; 

    //get bank balance 
    ViewData["bankBalance"] = bankBalance.Sum(); 


    //get actual balance 
    ViewData["actualBalance"] = actualBalance.Sum(); 

    return View(); 
} 

을 내가 보여 있어요 인덱스보기에서 실제와 다른 균형을 다음과 같이

<td colspan="9" style="text-align: center; font-size: 11pt; color: white;"> 
    <%= string.Format("Bank Balance: {0:c}", ViewData["bankBalance"]) %> ------ 
    <%= string.Format("Actual Balance: {0:c}", ViewData["actualBalance"]) %> 
</td> 

답변

7

당신은 MVC의 일부를 누락 ... M.

당신은 필요한 모든 데이터 항목을 포함하는 모델을 채우기해야

보기. 이것이 컨트롤러가 보일 것입니다.

[Authorize(Roles = "admin, checkUser")] 
public ActionResult Index() 
{ 
    IndexModel model = new IndexModel(); 

    var resultSet = from myChecking in chk.tblCheckings 
        orderby myChecking.id descending 
        select myChecking; 

    model.Transactions = resultSet.Take(45).ToList(); 

    //for balances 
    var bankBalance = from theChecking in chk.tblCheckings 
         where theChecking.cleared == true 
         select theChecking.deposit - theChecking.withdrawal; 

    model.BankBalance = bankBalance.Sum(); 


    //get actual balance 
    var actualBalance = from theChecking in chk.tblCheckings 
        select theChecking.deposit - theChecking.withdrawal; 

    model.ActualBalance = actualBalance.Sum(); 

    return View(model); 
} 

그런 다음 뷰가 다음과 같을 것이다 (참고, 모델의 모든 것을 강력하게 입력한다) :

<td colspan="9" style="text-align: center; font-size: 11pt; color: white;"> 
    <%= string.Format("Bank Balance: {0:c}", Model.BankBalance) %> ------ 
    <%= string.Format("Actual Balance: {0:c}", Model.ActualBalance) %> 
</td> 
당신은 모든 속성 단지 클래스 모델을 만들어야합니다

네가 원해.

+0

그래서 ADO.NET 엔터티 모델을 만들었습니까?이 모델은이 별도의 모델과는 다른 것을 만들어야한다고 말하고 있습니까? (죄송합니다, 튜토리얼을 따라) – Matt

+0

모델은 뷰를 지원하는 것에 만 관심을 가져야합니다. 컨트롤러에서 뷰를 생성해야합니다. ADO.NET Entity Model을 사용하여 MVC 모델의 일부 필드를 채울 수는 있지만 동일한 것은 아닙니다. – Fenton

관련 문제