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();

任何指针在这里都会非常有用,特别是如果我以完全错误的方式接近这个!

4

2 回答 2

2

是的,你真的很接近这FullName家酒店。

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

不需要私有_fullName,因为您只需要获取 Forename 和 Surname 的值。而且您不需要 aset因为您不会使用将值设置回此模型FullName

于 2013-07-20T19:14:33.130 回答
-1

您可以在添加 Staff_Member 的存储库中进行此更改

public void AddStaff(Staff_Member sm)
{
    String fullName = sm.Forename.ToString()+" "+sm.Surname.ToString();
    sm.FullName = fullName;
    _context.Staff_Member.Add(sm);
}

但是,您还需要在 Staff_Member 模型中为 FullName 设置方法。

于 2021-11-19T14:18:54.403 回答