2015-03-03 23 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> 
相关问题