【发布时间】:2019-08-31 02:23:26
【问题描述】:
我正在尝试从数据库中填充 HTML 表。从数据库中检索数据很好。
控制器代码:
public ActionResult Transaction(int pageNumber = 1, int resultsPerPage = 10)
{
Logic.ManipulateTransaction.SelectTransactions(Guid.Parse(Session["UserId"].ToString()), Guid.Parse("013E3D0F-E755-495B-8D1E-4A3D1340ACF8"), 0, 9223372036854775807, false, DateTime.Now.Date, DateTime.Now.Date, pageNumber - 1, resultsPerPage);
return View(currentPageTransactions);
}
第一次访问此页面时,currentPageTransactions 会正常返回视图。视图将其识别为模型,并使用以下代码很好地填充 HTML 表:
@{ int rowNumber = 0; }
@foreach (var transaction in Model)
{
<tr>
<td hidden>@transaction.transaction_id</td>
<td hidden>@transaction.category_id.ToString().ToUpper()</td>
<td>@transaction.name</td>
<td>@transaction.type</td>
<td>@transaction.amount</td>
<td>@transaction.description</td>
<td>@transaction.datestamp.ToString("MM/dd/yyyy")</td>
<td hidden>@(rowNumber += 1)</td>
<td width="20%">
<input type="button" class="btn btn-warning" value="Modify" onclick="EditTransactionModal(this)" data-toggle="modal" data-target="#modifyTransactionModal" />
<input type="button" class="btn btn-danger" value="Decimate" onclick="DeleteTransaction(this)" />
</td>
</tr>
}
- 当数据集第一次返回视图时,HTML 表会正确填充。
- 我手动将一行插入到数据库中。
- 然后调用一个javascript函数,再次调用
ActionResult Transaction。这被称为罚款,并从数据库中检索条目。在调试模式下,我可以看到我手动插入的行。 - 然后第二次将结果返回到视图中。在视图上处于调试模式时,我可以看到新数据集,其中包含预期的新行。
- 但是,当执行 Razor 代码将其添加到表中时,表根本没有改变。
为什么从数据库中检索数据正常,但 HTML 表没有更新?
编辑:
用于调用ActionMehtod的Javascipt/Ajax
function GetTransactions() {
var paginationObject =
{
pageNumber: $('#pageNumber').val(),
resultsPerPage: $('#resultPerPage').val()
};
$.ajax({
url: '/Transaction/Transaction',
data: JSON.stringify(paginationObject),
type: "POST",
contentType: "application/json;charset=utf-8",
error: function (errormessage) {
alert(errormessage.responseText);
}
});
}
会不会和POST有关?我已经尝试将其更改为GET,但是我无法将paginationObject 的属性传递给ActionMethod。
【问题讨论】:
-
控制器操作的默认 HTTP 动词是
GET,因此您的调用可能会被缓存。您是在使用库来发出您的 ajax 请求还是只是使用纯 JavaScript? -
向我们展示您如何调用 Transaction 操作。
-
@Jasen 我已将其包含在问题中。
-
@StaticBeagle 我没有听说过将库用于此类目的,所以可能没有。如果这回答了你的问题,我包含了我的 JS 函数?
-
通过 POST 请求,您应该不会遇到缓存问题。 但是,您完全忽略了返回的响应。 添加成功处理程序并替换现有的 html。
标签: c# asp.net-mvc razor model-view-controller html-table