首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JQuery和MVC POST

问JQuery和MVC POST
EN

Stack Overflow用户
提问于 2012-07-04 12:42:03
回答 2查看 259关注 0票数 1

我有一个绑定到模型的html元素(使用MVC3)

代码语言:javascript
复制
        <label id="total-amount">
             @Html.Encode(@Model.TotalAmount)
        </label>

我在客户端使用Jquery修改了这个值

代码语言:javascript
复制
        if (!$(this).is(':checked')) {

           var lblTotalAmount = $("#total-amount");
           var totalAmount = nationalPrice + recurPrice;
           lblTotalAmount.text(totalAmount.toFixed(2));

        }

它工作得很好。但是当我在我的控制器中发布Model.TotalAmount的值时..我通过JQuery修改的值没有反映...

代码语言:javascript
复制
    [HttpPost]
    [ActionName("Payment")]
    public ActionResult PaymentViaPost(PaymentVM viewModel)
    {
        //still the same value before JQuery modification
        var totalAmount = viewModel.TotalAmount; 

我是不是遗漏了什么,比如我需要一个使用AJAX的异步调用或者别的什么……如果是这样,我该怎么做呢?

EN

回答 2

Stack Overflow用户

发布于 2012-07-04 13:10:32

标签中的文本不会发送到服务器,您需要使用某种输入控件。

我建议您使用隐藏控件,并让您的JQuery同时更新标签和隐藏输入。

例如:

代码语言:javascript
复制
@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
EN

Stack Overflow用户

发布于 2012-07-04 14:01:46

我相信这可以通过以下方式实现:

  1. 从客户端更新html控制值正如您所做的那样
  2. 使用$.Post of jQuery将更新后的值发送到MVC控制器(创建新控制器以更新模型)
  3. 在控制器操作中更新您的模型

一旦模型被更新,它将反映在您的UI上。在您的例子中,问题是您的模型没有更新,因此PaymentViaPost操作总是从模型中获取旧值

下面的链接可能会有所帮助

MVC3 and jQuery

Update model with jQuery

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11322512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档