2013-07-20 35 views
0

我刚刚开始学习MVC。模型 - 基于其他字段值的字段

我创建了一个简单的模型:

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; } 
} 

现在我已经决定,我想包括一个下拉所有StaffMembers的列表中创建页上的观测记录。我能做到,与下面的代码:

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

这完美的作品,虽然,你会发现,我只能包含一个字段,"Forename"

我想要下拉列表显示职员的全名。我尝试手动连接字段,即"Forename" + " " + "Surname",但抛出和例外情况是没有“Forename”+“”+“Surname”这样的字段。

我的问题是这样的 - 是否可以添加到我的模型某种属性,它只是基于两个现有属性的值。喜欢的东西:

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值,即使该字段显示正确的值在调试时。

我用下面的自动填充分贝用一些测试数据:

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因为你只需要得到的名字及姓氏的值。并且您不需要set,因为您不会将值设置回此模型使用FullName

+0

完美,谢谢! –

相关问题