2015-03-03 46 views
0

我有一個跨度,其價值通過knockout.js設置:當數據由JavaScript設置時,如何將數據從View傳遞到Controller?

<span id="total" data-bind="text: total"></span> 

這是設置好的每當滑塊的變化值。所有這些都在BeginForm中。現在我的問題是如何讓它通過(通過模型綁定)傳遞給控制器​​。如何在提交模型時獲取此值,以便在我調用Action時綁定該值?

編輯:

好吧,讓我重複我的問題。我有一個強類型模型的cshtml文件。現在這種模式(總)的屬性綁定到一個隱藏字段來擔任基值:

@Html.HiddenFor(model => model.Total, new { id = "base-total" }) 

現在,在這個CSHTML,存在這樣它可以改變一個跨度的值,根據計算的滑塊滑塊和底座總數。

<span id="total" data-bind="text: total"></span> 

我需要通過js進行更改,因爲每當我移動滑塊時都無法重新加載頁面。所以我現在的問題是顯示被改變,但實際的模型值不是,所以當我提交時,模型仍然具有基礎總值。

我怎樣才能讓我通過js改變的值在模型上傳遞?如果這不是正確的方法,你能建議我可以嘗試什麼嗎?

+0

可以請你添加一些更多的代碼? – 2015-03-03 04:30:05

+3

''元素不是表單控件,所以它們的值不會回傳。一個選項可能是將隱藏的輸入綁定到該值。 – 2015-03-03 04:34:53

+0

@ Stephen Muecke - 謝謝你的回覆,你可以發表一個例子嗎? – 2015-03-03 04:47:42

回答

0

在方法上,你可以做到這一點是手動發送你的JS模型到提交表單的服務器。

例如:

<form data-bind="submit: doSomething"> 
    ... form contents go here ... 
    <span id="total" data-bind="text: total"></span> 
    <button type="submit">Submit</button> 
</form> 

<script type="text/javascript"> 
    var viewModel = { 
     doSomething : function(formElement) { 
      // ... now do something 

      var data = JSON.stringify(
      { 
       total: self.total // for example. 
      }); // prepare request data 

      $.post("/api/your-service", data, function(response) // sends 'post' request 
      { 
       // on success callback 
       self.responseJSON(response); 
      }) 
     } 
    }; 
</script> 
相關問題