在回发时未收到多个局部视图数据
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"))
方法中使用的名称。
请您帮忙解决以下问题。 我有一个主视图和局部视图。在基于模型计数的主视图循环中,将渲染部分视图。局部视图如下
----------------局部视图---------------------
@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"))
方法中使用的名称。