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 --")

これは完全に機能しますが、1 つのフィールドしか含めることができないことに気付くでしょう "Forename"

ドロップダウンリストにスタッフのフルネームを表示したい。フィールドを手動で連結しようとしまし"Forename" + " " + "Surname"たが、「Forename」+「」+「Surname」のようなフィールドがないという例外がスローされました。

私の質問はこれです - 単純に 2 つの既存のプロパティの値に基づいたある種のプロパティをモデルに追加することは可能ですか? 何かのようなもの:

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