我对此比较陌生。我正在处理这个ASP.NET Core MVC
项目,我想在PartialView
HistoryTable.cshtml
中加载<div>
,Main View
Main View
,Locate.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
详细信息保存到数据库中。 HistoryTable
按钮下方的Submit
。必须始终显示此HistoryTable
(甚至在点击Submit
之前)。因此,我无法使用Button
。 答案 0 :(得分:0)
这里存在许多问题,因此要弄清楚你实际上想要实现的目标有点困难。
首先,您的Locate
操作应该在GET和POST上返回您的Locate.cshtml
视图。该视图包含您的HistoryTable.cshtml
部分视图这一事实是一个实现细节。如果您只在POST上返回部分内容,则您只会在浏览器中使用部分HTML,而不是完整的Locate
视图。
然后,您似乎尝试使用jQuery的load
方法来加载您的实际部分,而不是返回该部分的操作。你无法直接获得视图;您需要向与返回该部分的操作相关联的路径提交AJAX请求(load
正在做什么)。
接下来,看起来你的部分需要一个有效载荷,即某个对象需要被发布&#34;为了它的工作。如果是这种情况,您需要将需要发布的JavaScript对象表示作为第二个参数传递给load
方法。实际上,它只是直接发出GET请求,不传递任何数据。
但是,由于您只是在页面加载时执行此操作,因此会对您为什么要使用AJAX产生疑问。只有在页面加载后需要更改以后的内容时,AJAX才有意义。如果您在加载时正在执行AJAX请求,则应该从头开始构建它,从而无需单独的请求。
最后,虽然当您将模型包含在页面中时可以将模型传递给局部视图,但您实际上在这里寻找的内容更可能是view component,即实际上能够实现的内容像从数据库中查询一样做逻辑,与主要的请求分开。