2013-10-14 3 views
0

전적으로 다른 연결 문자열에서 RecordsTaskViews이라는 테이블을 가져 오는 모델 RETLogModel에서 실행되는보기가 있습니다. 내 모델에서 수집 한 정보를 기반으로 RecordsTaskViews에 대한 정보를 전달해야합니다. 현재 내 기능은 다음과 같습니다그럼 더 나은 해결책이 있습니까 ViewData

Function RETLog(model As RETModels.RETLogModel) As ActionResult 
    Dim id As Integer = model.ActivityIDReturn 
    Dim id2 As Integer 
    Dim PS As RecordsTaskView = GlobalVar.db.PS.RecordsTaskViews.Find(id) 
    If model.ActivityIDReturn > 0 Then 
     id2 = model.ActivityIDReturn 
    Else : id2 = PS.RefActionID 
    End If 
    If model.ActivityIDError > 0 Then 
     ViewData("ActivityIDErrorValue") = model.ActivityIDError 
    Else : ViewData("ActivityIDErrorValue") = PS.RefActionID 
    End If 
    Dim PS2 As RecordsTaskView = GlobalVar.db.PS.RecordsTaskViews.Find(id2) 
    If model.ActivityIDReturn > 0 Then 
     If PS IsNot Nothing Then 
      ViewData("QRefActionID") = PS.RefActionID 
      ViewData("QQutDesc") = PS.QutDesc 
      ViewData("QTaskDesc") = PS.TaskDesc 
      ViewData("QClientCode") = PS.CltCode 
      ViewData("QClientName") = PS.CltDesc 
      ViewData("QMemberID") = PS.BenIDin 
      ViewData("QMemberName") = PS.BenNameLast & ", " & PS BenNameFirst 
      ViewData("QDateStart") = CDate(PS.DateStart).ToString("MM/dd/yyyy") 
      ViewData("QDateRes") = CDate(PS.DateResolution).ToString("MM/dd/yyyy") 
      ViewData("QCreateUser") = PS.UserIDCreation 
      ViewData("QLastChangeUser") = PS.UserIDLastChanged 
      ViewData("QDateReport") = CDate(PS.DateReport).ToString("MM/dd/yyyy") 
     Else 
      ViewData("QQutDesc") = "" 
      ViewData("QTaskDesc") = "" 
      ViewData("QClientCode") = "" 
      ViewData("QClientName") = "" 
      ViewData("QMemberID") = "" 
      ViewData("QMemberName") = "" 
      ViewData("QDateStart") = "" 
      ViewData("QDateRes") = "" 
      ViewData("QCreateUser") = "" 
      ViewData("QLastChangeUser") = "" 
      ViewData("QDateReport") = "" 
     End If 
     If PS2 IsNot Nothing Then 
      ViewData("ORefActionID") = PS2.RefActionID 
      ViewData("OQutDesc") = PS2.QutDesc 
      ViewData("OTaskDesc") = PS2.TaskDesc 
      ViewData("OClientCode") = PS2.CltCode 
      ViewData("OClientName") = PS2.CltDesc 
      ViewData("OMemberID") = PS2.BenIDin 
      ViewData("OMemberName") = PS2.BenNameLast & ", " & PS.BenNameFirst 
      ViewData("ODateStart") = CDate(PS2.DateStart).ToString("MM/dd/yyyy") 
      ViewData("ODateRes") = CDate(PS2.DateResolution).ToString("MM/dd/yyyy") 
      ViewData("OCreateUser") = PS2.UserIDCreation 
      ViewData("OLastChangeUser") = PS2.UserIDLastChanged 
      ViewData("ODateReport") = CDate(PS2.DateReport).ToString("MM/dd/yyyy") 
     Else 
      ViewData("ORefActionID") = "" 
      ViewData("OQutDesc") = "" 
      ViewData("OTaskDesc") = "" 
      ViewData("OClientCode") = "" 
      ViewData("OClientName") = "" 
      ViewData("OMemberID") = "" 
      ViewData("OMemberName") = "" 
      ViewData("ODateStart") = "" 
      ViewData("ODateRes") = "" 
      ViewData("OCreateUser") = "" 
      ViewData("OLastChangeUser") = "" 
      ViewData("ODateReport") = "" 
     End If 
    End If 
    If ModelState.IsValid Then 
    End If 
    Return View(model) 
End Function 

내 문제는이 분명히 ViewData 요소의 보트로드입니다. 뷰 자체에 이미 @ModelType RETModels.RETLogModel이 지정되어 있으므로보기에 데이터를 전달하는보다 효율적인 방법이 있습니까?

답변

2

더 효율적인 방법으로 데이터를보기에 전달할 수 있습니까?

예, 관련된 모든 (결합 된) 필드를 포함하는 ViewModel을 사용하여 뷰에 바인딩합니다.

AutoMapper과 같은 자동화 된 개체 매퍼를 사용하여 비즈니스 모델의 데이터를 ViewModel로 복사합니다.

관련 문제