Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/453.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
Javascript Knockoutjs将observableArray绑定到字节_Javascript_Asp.net Mvc 4_Knockout.js_Asp.net Web Api - Fatal编程技术网

Javascript Knockoutjs将observableArray绑定到字节

Javascript Knockoutjs将observableArray绑定到字节,javascript,asp.net-mvc-4,knockout.js,asp.net-web-api,Javascript,Asp.net Mvc 4,Knockout.js,Asp.net Web Api,我试图将复选框列表中的值数组绑定到属性类型为byte的模型。因此,我从复选框选择返回{“1”、“2”、“3”},在它到达我的模型之前,我需要字节格式的它,以便它可以正确地传递给我的模型。 属性字节{get;set;} My Knockout Viewmodel,其中self.DaysList=ko.observearray()是我的复选框列表属性 function ScheduledCommand() { //data var self = this; // An obs

我试图将复选框列表中的值数组绑定到属性类型为byte的模型。因此,我从复选框选择返回{“1”、“2”、“3”},在它到达我的模型之前,我需要字节格式的它,以便它可以正确地传递给我的模型。 属性字节{get;set;}

My Knockout Viewmodel,其中self.DaysList=ko.observearray()是我的复选框列表属性

function ScheduledCommand() {
    //data
    var self = this;
    // An observable is a “JavaScript object that can notify subscribers about changes.” 
    // When the contents of an observable change, the view is automatically updated to match.
    self.ScheduledCommandId = ko.observable();
    self.NextOccurence = ko.observable();
    self.CommandType = ko.observable();
    self.CommandAssembly = ko.observable();
    self.IntervalAmount = ko.observable();
    self.IntervalType = ko.observable();
    self.Catchup = ko.observable();
    self.Retry = ko.observable();
    self.SendToQueue = ko.observable();
    self.Enabled = ko.observable();
    self.SelectedCommand = ko.observable();
    self.DaysList = ko.observableArray();

    var Command = {
        ScheduledCommandId: self.ScheduledCommandId,
        NextOccurence: self.NextOccurence,
        CommandType: self.CommandType,
        CommandAssembly: self.CommandAssembly,
        IntervalAmount: self.IntervalAmount,
        IntervalType: self.IntervalType,
        Catchup: self.Catchup,
        Retry: self.Retry,
        SendToQueue: self.SendToQueue,
        Enabled: self.Enabled,
        SelectedCommand: ko.observable(),
        DaysList: ko.observableArray(),
    };

    self.Command = ko.observable();
    self.Commands = ko.observableArray();
    self.get = function () {
        $.ajax({
            url: '/api/Values',
            cache: false,
            type: 'GET',
            contentType: 'application/json; charset=utf-8',
            data: {},
            success: function (data) {
                self.Commands(data); //Put the response in ObservableArray
                $("#btnGetCommands").hide();
                $("#commandlist").show();
                $("#btnHideCommands").show();
            }
        });
    }

    self.hidecommands = function ()
    {
        $("#btnGetCommands").show();
        $("#btnHideCommands").hide();
        $("#commandlist").hide();
    }
    //ko.bindingHandlers.bootstrapPopover = {
    //    init: function (element, valueAccessor, allBindingsAccessor, Command) {
    //        var options = valueAccessor();
    //        var defaultOptions = {};
    //        options = $.extend(true, {}, defaultOptions, options);
    //        $(element).popover(options);
    //    }
    //};

    self.create = function (formElement) {
        if (Command.NextOccurence() != "" && Command.CommandType() != "" && Command.CommandAssembly() != "") {
            $.ajax({
                url: '/api/Values',
                cache: false,
                type: 'POST',
                contentType: 'application/json; charset=utf-8',
                data: ko.toJSON(Command),
                success: function (data) {
                    // alert('added');
                    self.Commands.push(data);
                    self.DaysList("");
                    self.NextOccurence("");
                    self.CommandType("");
                    self.CommandAssembly("");
                    self.IntervalAmount("");
                    self.IntervalType("");
                    self.Catchup("");
                    self.Retry("");
                    self.SendToQueue("");
                    self.Enabled("");
                    alert("Command " + self.CommandType() + " successfully created.")
                }
            }).fail(
                     function (xhr, textStatus, err) {
                         alert(err);
                     });

        }
        else {
            alert('Please Enter All the Values !!');
        }
    },
        self.selectCommand = function (command) {
            self.SelectedCommand(command.ScheduledCommandId)
            alert(command.ScheduledCommandId);
        },
    document.getElementById("btnGetCommands").onclick
}
$(document).ready(function () {
    // When the DOM is fulled loaded, call the ko.applyBindings function and pass 
    // in a new instance of the commandViewModel:
    $("#btnHideCommands").hide();
    $("#commandlist").hide();
    ko.applyBindings(new ScheduledCommand());
    // The ko.applyBindings method activates Knockout and wires up the view-model to the view.
});
我的API控制器方法这对于DaysList没有值

    public HttpResponseMessage Post(ScheduledCommand model)
    {
        repo.Add(model);

        var response = Request.CreateResponse<ScheduledCommand>(HttpStatusCode.Created, model);

        string uri = Url.Link("DefaultApi", new { id = model.ScheduledCommandId });

        response.Headers.Location = new Uri(uri);

        return response;
    }
公共httpresponsemessagepost(ScheduledCommand模型)
{
回购增加(模型);
var response=Request.CreateResponse(HttpStatusCode.Created,model);
字符串uri=Url.Link(“DefaultApi”,新的{id=model.scheduledCommand});
response.Headers.Location=新Uri(Uri);
返回响应;
}
最后是我的复选框列表

         @foreach (var item in ViewData["checklist"] as IEnumerable<SelectListItem>)
         { 
            <div class="checkbox">
              <label>
                <input type="checkbox" data-bind="attr: { value: @item.Value}, checked: $root.DaysOfWeek">
                @item.Text
              </label>
            </div>
         }
@foreach(ViewData[“检查表”]中的变量项为IEnumerable)
{ 
@项目.案文
}
它的敲除端很好,它返回我想要的内容,但我无法将其转换为一个字节。
谢谢你抽出时间

我想做的是,在传递给服务器之前,尝试将一个敲除可观察数组转换为一个字节,以满足参数类型(小int)。相反,我所做的是创建一个“占位符”(字符串数组)属性并将其转换为字节以满足我的数据属性

function ScheduledCommand() {
    //data
    var self = this;
    // An observable is a “JavaScript object that can notify subscribers about changes.” 
    // When the contents of an observable change, the view is automatically updated to match.
    self.ScheduledCommandId = ko.observable();
    self.NextOccurence = ko.observable();
    self.CommandType = ko.observable();
    self.CommandAssembly = ko.observable();
    self.IntervalAmount = ko.observable();
    self.IntervalType = ko.observable();
    self.Catchup = ko.observable();
    self.Retry = ko.observable();
    self.SendToQueue = ko.observable();
    self.Enabled = ko.observable();
    self.SelectedCommand = ko.observable();
    self.DaysList = ko.observableArray();

    var Command = {
        ScheduledCommandId: self.ScheduledCommandId,
        NextOccurence: self.NextOccurence,
        CommandType: self.CommandType,
        CommandAssembly: self.CommandAssembly,
        IntervalAmount: self.IntervalAmount,
        IntervalType: self.IntervalType,
        Catchup: self.Catchup,
        Retry: self.Retry,
        SendToQueue: self.SendToQueue,
        Enabled: self.Enabled,
        SelectedCommand: ko.observable(),
        DaysList: ko.observableArray(),
    };

    self.Command = ko.observable();
    self.Commands = ko.observableArray();
    self.get = function () {
        $.ajax({
            url: '/api/Values',
            cache: false,
            type: 'GET',
            contentType: 'application/json; charset=utf-8',
            data: {},
            success: function (data) {
                self.Commands(data); //Put the response in ObservableArray
                $("#btnGetCommands").hide();
                $("#commandlist").show();
                $("#btnHideCommands").show();
            }
        });
    }

    self.hidecommands = function ()
    {
        $("#btnGetCommands").show();
        $("#btnHideCommands").hide();
        $("#commandlist").hide();
    }
    //ko.bindingHandlers.bootstrapPopover = {
    //    init: function (element, valueAccessor, allBindingsAccessor, Command) {
    //        var options = valueAccessor();
    //        var defaultOptions = {};
    //        options = $.extend(true, {}, defaultOptions, options);
    //        $(element).popover(options);
    //    }
    //};

    self.create = function (formElement) {
        if (Command.NextOccurence() != "" && Command.CommandType() != "" && Command.CommandAssembly() != "") {
            $.ajax({
                url: '/api/Values',
                cache: false,
                type: 'POST',
                contentType: 'application/json; charset=utf-8',
                data: ko.toJSON(Command),
                success: function (data) {
                    // alert('added');
                    self.Commands.push(data);
                    self.DaysList("");
                    self.NextOccurence("");
                    self.CommandType("");
                    self.CommandAssembly("");
                    self.IntervalAmount("");
                    self.IntervalType("");
                    self.Catchup("");
                    self.Retry("");
                    self.SendToQueue("");
                    self.Enabled("");
                    alert("Command " + self.CommandType() + " successfully created.")
                }
            }).fail(
                     function (xhr, textStatus, err) {
                         alert(err);
                     });

        }
        else {
            alert('Please Enter All the Values !!');
        }
    },
        self.selectCommand = function (command) {
            self.SelectedCommand(command.ScheduledCommandId)
            alert(command.ScheduledCommandId);
        },
    document.getElementById("btnGetCommands").onclick
}
$(document).ready(function () {
    // When the DOM is fulled loaded, call the ko.applyBindings function and pass 
    // in a new instance of the commandViewModel:
    $("#btnHideCommands").hide();
    $("#commandlist").hide();
    ko.applyBindings(new ScheduledCommand());
    // The ko.applyBindings method activates Knockout and wires up the view-model to the view.
});

我只是希望使用javascript删除附加步骤。

您能详细说明一下吗?你到底被困在哪里?您是在努力进行转换,还是在寻找一种方法来截获更改的值以便进行转换?嘿,Dan,很抱歉,我正在努力将可观测数组发送到服务器。