2012-07-04 2 views
1

У меня есть HTML элемент, который привязываться к модели (с использованием MVC3)JQuery и MVC POST

 <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 или что-то ... и если это так. Как мне это сделать?

ответ

1

Текст на этикетке не будет отправлен на сервер, вам нужно будет использовать какой-либо контроль ввода.

Я предлагаю вам использовать скрытый элемент управления и обновить JQuery как метку, так и скрытый ввод.

например.

@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); 
} 
+0

имеет смысл ... Больная попытка Это. – lincx

0

Я считаю, что это может быть достигнуто в следующем порядке:

  1. Обновить значение управления HTML со стороны клиента, как вы сделали
  2. Использование $.Post из JQuery, чтобы отправить обновленное значение в контроллер MVC (создать новый контроллер для обновления модели)
  3. Обновите свою модель в действии контроллера

После обновления модели она отразится на вашем пользовательском интерфейсе. Проблема в вашем случае является то, что ваша модель не обновляется, следовательно PaymentViaPost действие всегда будет получать старые значения от модели

Следующие ссылки могут помочь

MVC3 and jQuery

Update model with jQuery