gpt4 book ai didi

c# - 在 jQuery.get 到 MVC Controller 操作后重新加载页面

转载 作者:行者123 更新时间:2023-11-30 14:37:29 27 4
gpt4 key购买 nike

我正在尝试创建一个 MVC View ,它将在多个表中显示一些数据,然后通过点击要更新的表上的提交按钮来更新这些数据。在更新表时,表中的记录可能会从一个表移动到下一个表(这都是在服务层处理的,而不是 View )。目前,我有从 Controller 呈现的 View ,每个表都是一个单独的部分 View ,向用户显示数据。我的更新被 jQuery 方法拦截,该方法从表中捕获数据,然后将其作为 JSON 字符串发布到 Controller 。然后 Controller 反序列化 JSON 并将其发布到服务层。

然后我想要发生的是 Controller 返回一个 View 结果,它将刷新整个页面,更新每个表,以便它显示适当的记录。除了页面刷新之外,我所有的东西都在工作——我的 Controller 返回一个 View 结果,并且 View 和模型在返回时都是正确的,但是页面没有像我期望的那样刷新。

我想我错过了一些愚蠢的东西,但此刻我看不出它是什么......

代码--

View 上的 jQuery 脚本:

function DailyPaymentIn(payInId, payOut, notes) {
this.PayInId = payInId;
this.PayOut = payOut;
this.Notes = notes;
}

$(function () {
$('#update-yes-payments').submit(function (e) {
e.preventDefault();

var payments = new Array();

$('#payment-table-yes tbody tr').each(function () {
var payInId = $('input#PayInId', this).val();
var payOut = $('input#PayOut', this).is(':checked');
var notes = $('input#payment_Notes', this).val();

payments.push(new DailyPaymentIn(payInId, payOut, notes));
});

$.get('/payments/UpdatePayments', { json: JSON.stringify(payments) });
});
});

上面是将值捕获到对象中,然后将其序列化为 JSON。这一切正常 - 数据被发送到 Controller 方法,并且在到达时处于正确的形状。我在实验中将 get 换成了 post,但运气不佳。

Controller 方法:

渲染数据的方法:

[HttpPost]
public ViewResult PayInAdmin(PayInAdminModel model)
{
var payments = _autoPayOutService.PopulatePayments(model.PaymentsDate);

return View("AutoPayOut/PayInAdmin", payments);
}

这将返回正确填充的 View 。

更新数据的方法:

public ViewResult UpdatePayments(string json)
{
var updates = Deserialise<List<DailyPaymentInUpdateModel>>(json);

var model = _autoPayOutService.UpdatePayments(updates);

return View("AutoPayOut/PayInAdmin", model);
}

这是接收 JSON 并正确处理它,但是当它返回时,页面没有更新。请注意,返回的 View 在两个 Controller 操作上是相同的,并且服务调用的返回类型也是相同的 - 我可以看到在调试中返回了一个正确填充的模型。

我不确定问题出在哪里,据我所知,这应该是正确返回 View 。我是 jQuery 和 MVC 3 的新手,所以很可能我正在以错误的方式进行处理 - 我是否应该以不同的方式执行此操作或者我是否只是错过了一些东西,我不确定.

干杯

最佳答案

如果你需要更新整个页面,你不需要使用$.get,一个ajax方法。试试这个:

window.location = '/payments/UpdatePayments?json=' + JSON.stringify(payments);

关于c# - 在 jQuery.get 到 MVC Controller 操作后重新加载页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9216226/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com