Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么我的MVC Razor只在第一次返回视图时填充HTML表?_C#_Asp.net Mvc_Razor_Model View Controller_Html Table - Fatal编程技术网

C# 为什么我的MVC Razor只在第一次返回视图时填充HTML表?

C# 为什么我的MVC Razor只在第一次返回视图时填充HTML表?,c#,asp.net-mvc,razor,model-view-controller,html-table,C#,Asp.net Mvc,Razor,Model View Controller,Html Table,我试图从数据库中填充HTML表。从数据库中检索数据 控制器代码: public ActionResult Transaction(int pageNumber = 1, int resultsPerPage = 10) { Logic.ManipulateTransaction.SelectTransactions(Guid.Parse(Session["UserId"].ToString()), Guid.Parse("013E3D0F-E755-495B-8D1E-4A3D1340A

我试图从数据库中填充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>
                }

这可能与
POST
有关吗?我已尝试将其更改为
GET
,但无法将
paginationObject
的属性传递到
ActionMethod
使用AJAX,浏览器将不会离开当前页面,也不会自动重新加载页面。这通常是我们在使用AJAX时想要的。因此,您需要捕获来自AJAX帖子的响应并自己更新DOM

首先标识或创建父元素

<div id="parent">

    @* The table is what we want re-rendered after the POST, then inserted here *@
    <table>
    @{ int rowNumber = 0; }
    @foreach (var transaction in Model)
    {
        <tr>                       
            <td hidden>@transaction.transaction_id</td>
            ...
        </tr>
    }
    </table>

</div>

控制器操作的默认HTTP动词是
GET
,因此您的调用可能会被缓存。您是使用库来发出ajax请求还是使用纯JavaScript?向我们展示您如何调用事务操作。@Jasen,我已经将其包括在问题中。@StaticBeagle,我没有听说过使用库来发出ajax请求,所以可能没有。如果我的JS函数回答了您的问题,那么我就包括了它?对于POST请求,您不应该这样做获取缓存问题。但是,您完全忽略返回的响应。添加一个成功处理程序并替换现有的html。当我们替换html结果时,这是否对效率有显著影响?我假设,既然我们已经有了响应,它也是客户端的?最大的好处是用户不会经历完全的重新加载-它看起来不会被导航走。如果您只是替换文档上的几行,那么是的,这会减少网络流量。我理解。我注意到你的例子中有些东西。如果我将断点放在
GetTransactions()
中的任何位置,则在我第一次执行
POST
时,它将被命中,并按预期重新填充表。当我再次执行第二次操作时,断点没有命中,但表仍按预期刷新。当未完成
POST
时,如何获得正确的数据?页面上的脚本是否也与html内容一起被替换?如果您在被替换的脚本中创建了断点,则下一次运行将在不同的调试上下文中。编写主页,这样脚本就不会被替换,而表是唯一被替换的html。我这里还有一个例子
<div id="parent">

    @* The table is what we want re-rendered after the POST, then inserted here *@
    <table>
    @{ int rowNumber = 0; }
    @foreach (var transaction in Model)
    {
        <tr>                       
            <td hidden>@transaction.transaction_id</td>
            ...
        </tr>
    }
    </table>

</div>
$.ajax({
    url: '/Transaction/Transaction',
    data: JSON.stringify(paginationObject),
    type: "POST",
    contentType: "application/json;charset=utf-8",
    error: function (errormessage) {
        alert(errormessage.responseText);
    },

    success: function(htmlResponse)
    {
        $("#parent").html(htmlResponse);    
    }

});