주요 변경 사항 및 동작을 추적하기 위해 ASP.NET MVC 응용 프로그램에 대한 감사 테이블을 만들었습니다. 이 테이블의 내용을 권한있는 사용자에게보기 쉬운 형식으로 제시하고자합니다.ASP.NET MVC에서 하이브리드 모델 (다른 모델의 비트 포함) 만들기?
감사 테이블과 같이 (간체)된다
ID (int) | StaffID (int) | Action (string) | Timestamp (datetime)
-----------------------------------------------------------------
1987 | 27 | Delete entry: 9 | 2010-02-22 12:30:12
1988 | 34 | Add user: 912 | 2010-02-22 12:48:19
을 지금까지 난 그냥 기본 "목록"을 사용하여 MVC에서보기 그러나 우리는 개발의 끝으로 받고 있다는 것을 제시했습니다 StaffID보다는 직원 이름을 보여줌으로써이 견해를 약간 정리하고 싶습니다.
처음에 나는 감사 및 직원과 통과가 모두 포함 된 "하이브리드 모델을"만드는 방법을 사용하고 그 뷰 :
public class AuditModel
{
public AuditModel(List<Audit> AuditEntries, List<Staff> AllStaff)
{
this.Audit = AuditEntries;
this.Staff = AllStaff;
}
public List<Audit> Audit { get; private set; }
public List<Staff> Staff { get; private set; }
}
[AcceptVerbs("GET")]
public ActionResult ViewAuditTrail()
{
var Audit = (from a in db.Audits orderby a.Timestamp descending select a).ToList();
var Staff = (from s in db.Staffs select s).ToList();
return View(new AuditModel(Audit, Staff));
}
하지만 그건보기에 어지러움에 이르게 :
- ID를 :
<% foreach (var Entry in Model.AuditEntries) { var StaffDetails = Model.AllStaff.Where(s => s.ID == Entry.StaffID).SingleOrDefault(); /* output HTML */ } %>
그래서 나는 다음과 같은 특성을 가진 새로운 모델을 만들 수 있습니다 무엇을 원하는 것 같아요 (INT)는 - Staff.ID [S => s.StaffID == Staff.ID]
- 조 (문자열) - -
- StaffName (문자열) Audit.ID Audit.Action
- 소인 (날짜) - Audit.Timestamp
컨트롤러에서이 작업을 수행하여 ToList()로보기에 전달하여 내보기를보다 간단하고 간단하게 만들 수 있습니다.
팁이 있습니까?
감사 데이터 무결성에 대한 관심이 높아 졌기 때문에 Upvoted.이론적으로 직원은 삭제해서는 안됩니다 (앱에 자체 직원 데이터 저장소가 있음).하지만 ID와 이름을 결합한 방식이 좋습니다. 나는 아직도 내 자신의 "하이브리드 모델"을 만드는 방법을 알고 싶다. 왜냐하면 나는 그것을 애플 리케이션의 다른 부분에 사용해야 할 것 같기 때문이다. –