请帮助您解决以下问题。 我有一个主视图和局部视图。在主视图中,基于模型的计数循环,将呈现部分视图。部分视图如下所示
----------------- Partial View ----------------------
@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();
}
问题是我没有在点击提交按钮时收到从View发布到Controller的数据。我在主视图上有多个相同模型的部分视图,当点击提交按钮时,我需要将所有部分视图数据发布到控制器。在部分视图中我使用BeginCollectionItem。请帮助你。
答案 0 :(得分:0)
表单只回发其成功控件的名称/值对,而不会在<form>
标记内生成表单控件。
更改代码,将@Html.Partial()
代码移到<form>
(简化)
@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" />
}
您还需要将POST方法签名更改为
public ActionResult Contact(IEnumerable<BookViewModel> books)
匹配您在@using (Html.BeginCollectionItem("books"))
方法中使用的名称。