2013-07-20 3 views
0

저는 문자 그대로 방금 MVC를 배우기 시작했습니다. 지금은 내가 관찰 기록의 작성 페이지의 모든 StaffMembers의 드롭 다운 목록을 포함 할 것을 결정했다모델 - 다른 필드의 값을 기반으로 한 필드

public class StaffMember 
{ 
    public Guid StaffMemberId { get; set; } 
    public string Forename { get; set; } 
    public string Surname { get; set; } 
    public string Team { get; set; } 
    public virtual ICollection<Observation> Observations { get; set; } 
} 

:

나는 간단한 모델을 만들었습니다. 나는 다음과 같은 코드를 그렇게 관리 : 당신은 내가 단일 필드, "Forename" 만 포함 할 수 있음을 알 수 있습니다,하지만

@Html.DropDownListFor(o => o.StaffMemberId, 
          new SelectList(Model.StaffMembers, 
             "StaffMemberId", 
             "Forename", 
             Model.StaffMemberId), 
          "-- Select Staff Member --") 

이 완벽하게 작동합니다.

직원 목록을 드롭 다운 목록에 표시하고 싶습니다. 즉, "Forename" + " " + "Surname" 필드를 수동으로 연결하려고했지만 "Forename"+ ""+ "성"과 같은 필드가없는 것에 대해서는 예외가 발생했습니다.

제 질문은 내 모델에 단순히 기존 속성 두 개 값을 기반으로하는 일종의 속성을 추가 할 수 있습니까? 뭔가 같은 :

public class StaffMember 
{ 
    private string _fullName; 

    public Guid StaffMemberId { get; set; } 
    public string Forename { get; set; } 
    public string Surname { get; set; } 
    public string Team { get; set; } 
    public virtual ICollection<Observation> Observations { get; set; } 

    public string FullName 
    { 
     get 
     { 
      return _fullName; 
     } 
     set 
     { 
      value = this.Forename + " " + this.Surname; 
      _fullName = value; 
     } 
    } 
} 

내가 위를했지만, 내 데이터베이스를 (내가 먼저 개체 모델 코드를 사용하고 있습니다) 채우는 경우, 해당 필드는 항상 디버깅 할 때 필드가 올바른 값을 보여줍니다에도 불구하고, null의 값이 . 내가 자동으로 다음 사용하고

는 몇 가지 테스트 데이터로 DB를 채울 :

var staff = new List<StaffMember> 
{ 
    new StaffMember 
    { 
     Forename = "Bob", 
     Surname = "Hope", 
     StaffMemberId = Guid.NewGuid(), 
     Team = "Test" 
    }, 
    new StaffMember 
    { 
     Forename = "Stan", 
     Surname = "Laurel", 
     StaffMemberId = Guid.NewGuid(), 
     Team = "Test" 
    } 
}; 

staff.ForEach(s => context.StaffMembers.Add(s)); 
context.SaveChanges(); 

모든 포인터는 여기에 정말 유용 할 것, 내가 완전히 잘못된 방법으로이 문제를 접근하고, 특히!

답변

2

예, 당신은 실제로 FullName 속성과 가깝습니다.

public class StaffMember 
{ 
    public string FullName 
    { 
     get 
     { 
      return this.Forename + " " + this.Surname; 
     } 
    } 
} 

만 뒤따라야와 성의 값을 얻을 필요가 있기 때문에 개인 _fullName에 대한 필요가 없습니다. 그리고 FullName

+0

을 사용하여이 모델에 다시 값을 설정하지 않으므로 set이 필요하지 않습니다. 감사합니다. –

관련 문제