我刚刚开始学习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();
任何指针在这里都非常有用,特别是如果我以完全错误的方式接近它的话!
答案 0 :(得分:2)
是的,你真的很接近FullName
财产。
public class StaffMember
{
public string FullName
{
get
{
return this.Forename + " " + this.Surname;
}
}
}
不需要私有_fullName
,因为您只需要获取Forename和Surname的值。而且您不需要set
,因为您不会使用FullName