Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 带自动更新的淘汰复选框绑定_Asp.net Mvc_Knockout.js_Asp.net Web Api - Fatal编程技术网

Asp.net mvc 带自动更新的淘汰复选框绑定

Asp.net mvc 带自动更新的淘汰复选框绑定,asp.net-mvc,knockout.js,asp.net-web-api,Asp.net Mvc,Knockout.js,Asp.net Web Api,我试图在某人更改以前绑定的复选框的状态时,使用新值更新服务器。 这就是我所拥有的: JSCRIPT function JobViewModel() { var self = this; var baseUri = '/Api/Pedidos/'; self.TotalItems = ko.observable(@Model.TotalItems); self.AbreviaNome = ko.observable(@Model.A

我试图在某人更改以前绑定的复选框的状态时,使用新值更新服务器。 这就是我所拥有的:

JSCRIPT

function JobViewModel() {
        var self = this;
        var baseUri = '/Api/Pedidos/';

        self.TotalItems = ko.observable(@Model.TotalItems);
        self.AbreviaNome = ko.observable(@Model.AbreviaNome.ToString().ToLower());
        self.AbreviaFantasia = ko.observable(@Model.AbreviaFantasia.ToString().ToLower());

        self.update = function () {
            alert('Boom');
            $.ajax({
                type: "PUT",
                url: baseUri,
                data: self.Job,
                datatype: "json",
                contenttype: "application/json"
            })
                .done(function (data) {
                    //handleSuccessFunctionHERE(data);
                    alert('Magic');
                })
                .error(function (jqXHR, textStatus, errorThrown) {
                    alert(errorThrown);
                    alert("fail");
                });
        };
    }

    function JobDetailsViewModel() {
        var self = this;
        var baseUri = '/Api/Pedidos/';
        self.Job = new JobViewModel();

    }
HTML


有什么想法吗?

您应该为此使用
订阅
,而不是
onchange
处理程序。你提到你试过了,但是你订阅了AbreviaNome而不是AbreviaLogradouro

解决了问题,下面是绑定:

 <label class="btn btn-primary " data-bind="css: {active:Job.AbreviaNome}">
     <input type="checkbox" data-bind="checked: Job.AbreviaNome, event: {change: Job.update}" name="type" id="AbreviaNome">Nome/Razão</input>
 </label>

诺姆/拉芒

不确定这是否是最好的方法,但它确实有效。

修复了示例,因为您引用了我绑定的字段上的错误。请避免使用更改事件绑定。你不需要它。你应该以击倒的方式处理更改-使用订阅。我正在尝试,但它不起作用,没有失败,或者其他什么。当我在subscribe方法上设置断点时,它从不触发
<label class="btn btn-primary" data-bind="css: {active:Job.AbreviaNome }">
      <input type="checkbox" data-bind="checked: AbreviaNome , click: Job.update" name="type" id="AbreviaNome "> Nome</input>
</label>
this.AbreviaNome.subscribe(function (newValue) {                
      alert('test');
}, this);
 <label class="btn btn-primary " data-bind="css: {active:Job.AbreviaNome}">
     <input type="checkbox" data-bind="checked: Job.AbreviaNome, event: {change: Job.update}" name="type" id="AbreviaNome">Nome/Razão</input>
 </label>