0

MVCコントローラーに次の機能があります

public class XyzController:Controller
{
    public ActionResult Index(){...}
    [HttpPost]
    public bool Save(string jsondata)
    {

        //parse json data to insert into the database
    }
}

このビューモデルを保存関数に渡したい

var myObj = function (id) {
    var self = this;
    self.myId = id;    
    self.parameters = ko.observableArray();    
}

var ViewModel = function () {
    var self = this;       
    self.myObjList = ko.observableArray();
    self.sendItems = function() {
             $.ajax({
                     type: "POST",
                     url: '/Xyz/Save',
                     data: ko.toJSON(self),
                     contentType: "application/json; charset=utf-8",
                     dataType: "json",
                     success: function (response) {
                             alert(response);
                     },
                     error: function (request, status, error) {
                            alert(request.statusText);
                     }
             });
    }
}

var vm = new ViewModel()
ko.applyBindings(vm);

データを JSON.stringify({jsondata:ko.toJSON(self)}) として渡すとデータを取得できますが、myObjList とパラメーターを反復処理できるように、それをオブジェクトに変換するにはどうすればよいでしょうか?

4

1 に答える 1

1

まず、モデルを次のように変更してみてください:-

[JsonObject(MemberSerialization.OptIn)]
    public class Test
    {

        [JsonProperty("myId")]
        public string Id { get; set; }

        [JsonProperty("parameters")]
        public List<string> Parameters { get; set; }//List<string> or whatever it takes int of string

    }

うまくいかない場合は、Ajax リクエスト データを投稿してください...そうでなければ....

私はこのようなアプローチに従います:-

モデル:-

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Newtonsoft.Json;

namespace MvcApplication4.Models
{
    [JsonObject(MemberSerialization.OptIn)]
    public class Test
    {

        [JsonProperty("id")]
        public string Id { get; set; }

        [JsonProperty("name")]
        public string Name { get; set; }

    }
}

コントローラ

        //
        // POST: /Testing/
        [HttpPost]
        public void Post(MvcApplication4.Models.Test request)
        {

            try
            {
                //DO YOUR STUFF
            }
            catch (Exception ex)
            {
                throw (ex);
            }

        }

AJAX 呼び出し:-

var json = {};
json = data.id;
json = data.name;

$.ajax({
            type:  "POST",
            url: ""//Your URL,
            dataType: "json",
            contentType: 'application/json; charset=utf-8',
            data: ko.toJSON(json)
        }).done(function (data) {

        }).fail(function (request, error) {

        });

または、AJAX呼び出しを次のようにします

$.ajax({
                type:  "POST",
                url: ""//Your URL,
                dataType: "json",
                contentType: 'application/json; charset=utf-8',
                data: ko.toJSON({ id: value1, name: value2 }),//Get value1 and value2 from you ko varables
            }).done(function (data) {

            }).fail(function (request, error) {

            });
于 2013-03-20T19:50:08.937 に答える