0

ここに画像の説明を入力1 つのビューから 2 つのエンティティを保存する方法。1 対多の関係を持つ 2 つのエンティティ Party と Person があるとします。ここで、パーティ ビューから両方のエンティティを保存する必要があります。ASP.NET MVC4 を使用しています。

public partial class Cm_Opt_Pty_Party_S
{
    public Cm_Opt_Pty_Party_S()
    {
        this.Cm_Opt_Psn_Person_S = new HashSet<Cm_Opt_Psn_Person_S>();
    }

    public int Pty_ID { get; set; }
    public Nullable<int> Pty_PARTYTYPECODE { get; set; }
    public string Pty_FULLNAME { get; set; }
    public string Pty_GOVTID { get; set; }
    public Nullable<int> Pty_GOVTIDTC { get; set; }
    public Nullable<int> Pty_GOVTIDSTAT { get; set; }

    public virtual ICollection<Cm_Opt_Psn_Person_S> Cm_Opt_Psn_Person_S { get; set; }
}
4

2 に答える 2

1

あなたの問題をよりよく理解しているので、この回答を編集して、使用する解決策を示します。

コントローラーは、Party情報を表示するために Party オブジェクトをビューに配信します。ループを使用すると、コレクションに含まれるアイテムを表示できます。

@foreach(var m in Model.Persons)
{
    @Html.DisplayFor(model=>m.FirstName)
    @Html.DisplayFor(model=>m.Surname)
}

コレクションにさらに項目を追加する場合は、部分ビューまたはPerson. モデルとして強く型付けされPerson、ポストを受信するコントローラ アクションはPerson

たとえば、Personに がありFirstName、フォームがビューでこれらのヘルパーを使用する場合SurnamePartyId

@Html.TextboxFor(m=>m.FirstName)
@Html.TextboxFor(m=>m.Surname)
@Html.TextBoxFor(m=>m.PartyId)

次に、それをコントローラーに送信し、その人をコレクションに追加するためのロジックを用意します。次に、コレクションPartyに新しく追加された Person を含むモデルのビューを返します。Persons

@Ajax.BeginFormまたはいくつかのカスタム Jquery/Javascript を使用すると、この非同期を処理して、プロセス中にページが更新されないようにすることができます。

このようにしたくない場合は、別のオプションとして EditorTemplates があります。例については、こちらを参照してください: ASP.NET MVC LIST と同じビューでの作成

于 2013-07-19T09:42:39.973 に答える
1

ViewModelこのクラスには、両方のエンティティを作成するために必要な関連プロパティが含まれます。

次にView、代わりにに基づいて、ViewModelそれをコントローラーに渡します。

エンティティを保存する場合は、個別のエンティティを作成して保存できます。

于 2013-07-19T09:40:42.240 に答える