我刚刚开始学习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();
任何指针在这里都会非常有用,特别是如果我以完全错误的方式接近这个!