【发布时间】:2018-09-05 00:21:41
【问题描述】:
我对此比较陌生。我正在处理这个ASP.NET Core MVC 项目,当Main View、Locate.cshtml 加载时,我想在当前Main View 中的<div> 中加载PartialView、HistoryTable.cshtml。换句话说,我希望PartialView 在MainView 加载/重新加载时出现。
我正在通过以下方式实现它:
Locate.cshtml
@model Project.Models.CustomModels.LocationsHistoryViewModel
<div class="container">
...
<div id="divLocationsHistoryTable"></div>
...
</div>
@section Scripts {
<script type="text/javascript">
$(document).ready(function () {
$(".disabledropdowncntrl").prop('disabled', false).trigger("chosen:updated");
$("#divLocationsHistoryTable").load("/Project/HistoryTable");
});
HistoryTable.cshtml
@model IEnumerable<Project.Models.CustomModels.LocationsHistoryViewModel>
<div class="card">
...
@if(Model.Count() != 0)
{
<thead>
<tr>
<th data-column-id="UserId" data-type="string" data-identifier="true" hidden>User ID</th>
<th data-column-id="Name">Name</th>
...
</tr>
</thead>
}
else
{
...
}
<tbody>
@foreach(var item in Model)
{
<tr>
<td>
@item.User.FirstName @item.User.LastName
</td>
...
</tr>
}
</tbody>
</div>
控制器:定位 ActionMethod
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Locate(int Id, InventoryLocationsHistoryViewModel locationsHistoryVM)
{
...
var HistoryObject = _context.History
.Include(...
.Where(...
.Select(...
{
...
}).ToList();
return PartialView("/Project/HistoryTable", HistoryObject);
}
怎么办?
编辑
我面临的问题类似于this question,但不同的是我必须在这里使用Submit 按钮,因为我在这里提交form。 Submit 按钮在点击时必须做两件事:
- 将
form详细信息保存到数据库中。 - 更新必须始终显示在
Submit按钮下方的HistoryTable。这个HistoryTable必须始终显示(甚至在单击Submit之前)。因此,我不能使用Button。
【问题讨论】:
-
.load("/Project/HistoryTable")是.load(url_to_action)不是视图模板名称。但在这种情况下,您正在寻找Locate()操作。此外,您的操作需要您的 AJAX 请求未发送的参数。
标签: asp.net-mvc asp.net-core-mvc partial-views asp.net-mvc-partialview