在回发时未收到多个局部视图数据

Not Receiving Multiple Partial View data on Postback

请您帮忙解决以下问题。 我有一个主视图和局部视图。在基于模型计数的主视图循环中,将渲染部分视图。局部视图如下

----------------局部视图---------------------

@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();
        }

问题是我没有收到在单击提交按钮时从视图发布到控制器的数据。我在主视图上有多个相同模型的局部视图,当单击提交按钮时,我需要将所有局部视图数据发布到控制器。在局部视图中,我使用的是 BeginCollectionItem。请你帮忙解决这个问题。

一个表单只回发 name/value 对成功的控件,并且您不会在 <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")) 方法中使用的名称。