2016-03-22 11 views
0

私は提出しようとしているフォームを持っており、リストまたはモデルをバインドすることはできますが、同時に両方を行うことはできません。私はそれがモデルのバインダーと関係があると思う。リストモデルデータを使用したバインド

HTML

@using (Html.BeginForm("Index", "Home", FormMethod.Post)){ 
    @Html.AntiForgeryToken() 
    <div class="TransferHeader"> 
     <div> 
      @Html.LabelFor(model => model.tranRequestedBy) 
      @Html.EditorFor(model => model.tranRequestedBy, new { @Name = "h.tranRequestedBy" }) 
     </div> 
     <div> 
      @Html.LabelFor(model => model.tranNotes) 
      @Html.EditorFor(model => model.tranNotes, new { @Name = "h.tranNotes" }) 
     </div> 
     <input name="h.TransfersDetail.Index" id="detIndex" type="hidden" value="c3a3f7dd-41bb-4b95-b2a6-ab5125868adb"> 
     <input name="h.TransfersDetail[c3a3f7dd-41bb-4b95-b2a6-ab5125868adb].detToolCode" id="detToolCode" type="hidden" value="1234"> 
    </div> 
} 

コントローラ

[HttpPost] 
[ValidateAntiForgeryToken] 
public ActionResult Index(TransfersHeader h) 
{ 
    return View(); 
} 

モデルクラス:

public virtual ICollection<TransfersDetail> TransfersDetail { get; set; } 
public string tranRequestedBy { get; set; } 
public string tranNotes { get; set; } 

下の2つの入力が、彼らならば何が起こることである、addメソッドにAJAX呼び出しから生成されました存在しない場合は、2つのHTMLヘルパーエディタがモデルに含まれますが、存在する場合は転送のみ詳細リストが表示されます。 すべてのデータがモデルに入っていることを確認するためにできることはありますか?

答えて

0

これらの入力をどのように生成しているのかはわかりませんが、nameの属性は正しくありません。あなたの入力はまた

<input name="TransfersDetail.Index" type="hidden" value="c3a3f7dd-41bb-4b95-b2a6-ab5125868adb"> 
<input name="TransfersDetail[c3a3f7dd-41bb-4b95-b2a6-ab5125868adb].detToolCode" type="hidden" value="1234"> 

その明確ではありませんなぜあなたはjQueryのでコレクションアイテムを参照する場合、あなたはid属性を(追加する必要がありますので、あなたのモデルはhという名前のコレクションプロパティが含まれていませんが、それはTransfersDetailという名前のものを含んでいますクラス名と相対セレクタを使用するほうがよいでしょう)、使用するidには無効なhtmlである重複したid属性を生成することを示唆するインデクサがありません(とjQueryセレクタはどんな場合でも動作しません)

+0

ありがとう、それは働いて、私はコントローラの期待した後に、リストアイテムの名前を付けていたh。 – Herrozerro

関連する問題