MVC - .ajax调用之后的部分视图更新

时间:2017-11-03 18:04:03

标签: jquery ajax asp.net-mvc partial

我有一个包含许多表的页面,每个表都在局部视图中。我希望能够为其中一个表输入一些from / to日期,获取新数据,并且只更新该表。

我认为片段:

               <tbody>
                @foreach (var item in Model)
                {
                    var a = item.accounts;
                    foreach (var item2 in a)
                    {
                        <tr>
                            <td>@String.Format("{0:MM/dd/yyyy}", @item2.TradeDate)</td>
                            <td>@item2.AccountName</td>
                            <td></td>
                            <td>@String.Format("{0:n}", item2.ExecutionPrice)</td>
                            <td>@String.Format("{0:n}", item2.PrincipalAmount)</td>
                        </tr>
                    }
                }
            </tbody>

我想要做的是获取由此创建的html并使用新表更新div。

当应用程序首次加载时,我有一个方法返回此部分的ActionResult。在此之后,用户将设置新日期并单击Go,之后我进行ajax调用。这是我想要更新该表的那一点。

这可能吗?

编辑:

我做了一些改变。我现在有这个ajax电话:

         var url = "Company/Transactions?symbol=" + $("#savesymbol").val() + "&fromDate=" + $("#fromDate").val() + "&toDate=" + $("#toDate").val();
     alert(url)
     $.ajax({
         url: url, 
         type: "Post",
         //dataType: "html",
         async: false,
         success: function (result) {
             $('.transTarget').html(result);              
         },
         error: function () {
             alert("Error occured");
         }
     });

这导致整个页面被放置在我的.transTarget div中,而不仅仅是部分。但是,由于公司/交易返回部分视图,为什么我要获得整个页面?

这是我控制器中的公司/交易方法:

public async Task<ActionResult> Transactions(string symbol, string fromDate, string toDate)
{

string url = ServiceUrl + "api/company/transactions/" + symbol + "/" + fromDate + "/" + toDate + "/";


Transaction transactionInfo = new Transaction();
List<Transaction> transactionsList = new List<Models.Transaction>();

HttpResponseMessage responseMessage = await client.GetAsync(url);
if (responseMessage.IsSuccessStatusCode)
{
    var transactions = responseMessage.Content.ReadAsStringAsync().Result;

    var parsedTransactions = JObject.Parse(transactions)["Table1"];
    foreach (dynamic item in parsedTransactions)
    {
        Transaction.Accounts a = new Transaction.Accounts();

        a.AccountId = item.account_id;
        a.AccountName = item.AccountName;


        transactionInfo.accounts.Add(a);
    }

    transactionsList.Add(transactionInfo);

    return PartialView("_transactions", transactionsList);
}
return PartialView("Error");
}

编辑:

这就是触发它的原因:

                var a = item.dates;
            <div>
                From:
                <input id="fromDate" type="date" name="fromDate" value="@a.FromDate">
                To:
                <input id="toDate" type="date"  value="@a.ToDate">
                <button type="button" id="btn_transactions" class="btn btn-primary"><span class="glyphicon glyphicon-search"></span></button>
            </div>

0 个答案:

没有答案