2016-11-28 3 views
0

以下のクエリで助けてください。 私はメインビューと部分ビューを持っています。モデルの数に基づくメインビューのルーピングでは、部分ビューがレンダリングされます。パーシャルビューは以下の通りですポストバック時に複数のパーシャルビューデータを受信して​​いない

-----------------パーシャルビュー-------------------- -

@using (Html.BeginCollectionItem("books")) 
{ 
    <div id="bookRow" class="bookRow"> 
     <div class='container'> 
      <div class="align-left"> 
       <h1>Book Name</h1> 
       <h2>@Html.TextBoxFor(m => m.BookName)</h2> 
      </div> 
      <div class="align-right"> 
       <h1>Author</h1> 
       <h2>@Html.TextBoxFor(m => m.Author)</h2> 
      </div> 
      <div class="align-right"> 
       <h1>Publisher</h1> 
       <h2>@Html.TextBoxFor(m => m.Publisher)</h2> 
      </div> 
      <div class="align-right"> 
       @Html.CheckBoxFor(model => model.isConfirm) 
       @Html.Hidden("Id", @Model.Id) 
      </div> 
      <a href="#" class="deleteRow">Delete</a> 
     </div> 
    </div> 
} 

-------------------メインビュー-------------------- -

@model IEnumerable<TDLProject.Models.BookViewModel> 

<fieldset> 
    <legend>Books</legend> 

    <div id="new-Book"> 
     @foreach (var model in Model) 
     { 
      @Html.Partial("_DynamicPartialView", model) 
     } 
    </div> 

    <div> 
     <input type="button" id="addBook" name="addBook" value="Add Book" /> 
     <br /> 
    </div> 
    <br /> 
</fieldset> 

@using (Html.BeginForm()) 
{ 
    <div> 
     <input type="submit" id="submitButton" value="Submit" /> 
    </div> 
} 

-------------コントローラ--------------

[HttpPost] 
     public ActionResult Contact(IEnumerable<BookViewModel> bookModel) 
     { 
      // To do: do whatever you want with the data 
      return View(); 
     } 

問題は、私はないですです投稿されたデータを受信するom Submitボタンをクリックすると、コントローラに表示されます。私はメインビュー上に同じモデルの複数の部分的なビューを持っており、送信ボタンをクリックすると、コントローラに投稿されるすべての部分表示データが必要です。部分的なビューで私はBeginCollectionItemを使用しています。これで助けてください。

+0

ありがとうございました。働く罰金。 – VVR147493

答えて

0

フォームは成功したコントロールの名前と値のペアのみを返信し、フォームコントロールは<form>タグ内に生成しません。

変更<form>@Html.Partial()コードを移動するためのコード(簡体字)

@model IEnumerable<TDLProject.Models.BookViewModel> 
@using (Html.BeginForm()) 
{ 
    @foreach (var model in Model) 
    { 
     @Html.Partial("_DynamicPartialView", model) 
    } 
    <input type="button" id="addBook" name="addBook" value="Add Book" /> 
    <input type="submit" id="submitButton" value="Submit" /> 
} 

あなたはまたに使用する名前と一致するように

public ActionResult Contact(IEnumerable<BookViewModel> books) 

にPOSTメソッドのシグネチャを変更する必要があります@using (Html.BeginCollectionItem("books"))方法。

+0

こんにちはStephen、私は以下のように部分ビューで2つの剣道ドロップダウン(カスケード)を配置しました。(Html.Kendo()。DropDownListFor(model => model.ServerMakeId) .Name( "servermake" + Model.Id.ToString() ) .DataTextField(CommonConstants.Description) .DataValueField(CommonConstants.Id) .OptionLabel( "Select Server Make") ))))。 Id ServerMakeIdはnullを受け取る文字列です。 – VVR147493

+0

@ VVR147493、関連する詳細について新しい質問をする必要があります(ただし、 '.Name(" servermake "+ Model.Id.ToString()'を削除する必要があります) –

+0

ありがとうスティーブン。モデルの文字列であるプレースホルダーを追加すると、ドロップダウンリストのデータがコントローラーに取り込まれますが、メインと同じ複数の部分ビューに新しい項目を追加すると、partialviewsのドロップダウン値がコントローラーに表示されません。 – VVR147493

関連する問題