我有一个绑定到模型的html元素(使用MVC3)
<label id="total-amount">
@Html.Encode(@Model.TotalAmount)
</label>
我正在客户端使用Jquery修改值
if (!$(this).is(':checked')) {
var lblTotalAmount = $("#total-amount");
var totalAmount = nationalPrice + recurPrice;
lblTotalAmount.text(totalAmount.toFixed(2));
}
工作正常。 但是当我在我的控制器中发布Model.TotalAmount的值时...我通过JQuery修改的值并不反映......
[HttpPost]
[ActionName("Payment")]
public ActionResult PaymentViaPost(PaymentVM viewModel)
{
//still the same value before JQuery modification
var totalAmount = viewModel.TotalAmount;
我在这里遗漏了一些东西,比如我需要使用AJAX或其他东西进行异步调用......如果有,我该怎么做?
答案 0 :(得分:1)
标签中的文字不会发送到服务器,您需要使用某种输入控件。
我建议您使用隐藏控件,让JQuery更新标签和隐藏输入。
e.g。
@Html.HiddenFor( x => x.TotalAmount)
<label id="total-amount">
@Html.Encode(@Model.TotalAmount)
</label>
if (!$(this).is(':checked')) {
var lblTotalAmount = $("#total-amount");
var totalAmount = nationalPrice + recurPrice;
lblTotalAmount.text(totalAmount.toFixed(2));
var hiddenInput = $("#TotalAmount");
hiddenInput.val(totalAmount);
}
答案 1 :(得分:0)
我相信这可以通过以下方式实现:
$.Post
将更新后的值发送到MVC控制器(创建新控制器以更新模型)模型更新后,它将反映在您的用户界面上。您的案例中的问题是您的模型未更新,因此PaymentViaPost
操作将始终从模型中获取旧值
以下链接可以提供帮助