2017-05-24 3 views
0

MVC 5、C#6、VS 2017を使用しています。MVCフォームを作成するモデルの一部として、タイプAdmissionのコレクションがあり、クラスAdmissionが定義されています投稿時に複雑なモデルのリストをバインドする

public class Admission 
{ 
    public DateTime AdmissionDate {get; set;} 
    public YesNo EmergencyAdmission {get: set;} 
    public DateTime DischargeDate {get; set;} 
} 

YesNoとしてenumです。簡素化のため、私は親モデルを次のように減らしました。

public class Patient 
{ 
    public int PatientID {get; set;} 
    public string PatientName {get; set;} 
    public List<Admission> Admissions {get; set;} 
} 

アドミッションはクライアント側で動的に追加できます。モデルがインスタンス化されると、空の単一のadmissionが存在します。フォームの中で私は

@foreach (var item in Model.Patient.Admissions) 
{ 
    Html.RenderPartial("Admission", item); 
} 

を持っていると私はその後、使用部分図に:

@Html.EditorFor(m => m.AdmissionDate) 
@Html.EditorFor(m => m.EmergencyAdmission) 
@Html.EditorFor(m => m.DischargeDate) 

私は日付とYesNoenumを処理するために、エディタのテンプレートを持っています。

私の質問は、入学者リストの投稿にモデルをバインドする方法がわかりません。私がRequest.Formを使用し、自分のバインダーを書くと、部分ビューの項目が、配列構造がRequest.Formで失われた配列としてポストされています。私が見た唯一の解決策は、かなり複雑なJavaScript/jQuery関数を使用することです。私は可能な限りサーバー側をやりたい私がこの部分を解決できれば、追加の入学を動的に追加する方法があります。

+1

'RenderPartial()'を使うと、バインディングのために適切な 'name'属性(必要な接頭辞付き)を生成しないことを意味します。コレクションのフォームコントロールを生成する方法を理解するには、[この回答](http://stackoverflow.com/questions/30094047/html-table-to-ado-net-datatable/30094943#30094943)をお読みください。 –

+1

そして動的にコレクション項目の追加と削除については、[こちら](https://stackoverflow.com/questions/28019793/submit-same-partial-view-called-multiple-times-data-to-controller/28081308#28081308)と[ここをクリック](https://stackoverflow.com/questions/40539321/a-partial-view-passing-a-collection-using-the-html-begincollectionitem-helper/40541892#40541892) –

+0

これを回答として追加できますか?私はそれを受け入れることができます。 –

答えて

0

部分的ではなく入場用のエディタを作成します。

+0

私に例を教えてもらえますか?ありがとう –

関連する問題