0

データベースの更新のために.NETに渡したい次のモデルがあるBackboneプロジェクトがあります。

var myList = Backbone.Model.extend({

    // Default attributes for the todo item.
    defaults: function () {
        return {
            Name: "Default name"
        };
    },



    url: "/my/myList",

    "sync": mySyncFunction,

    // Ensure that each todo created has `title`.
    initialize: function () {
        if (!this.get("Name")) {
            this.set({ "Name": this.defaults.Name });
        }
    }
});

同期をオーバーライドするために以下を使用する

function mySyncFunction(method, model, options) {
    if (method == 'GET') {

        options.url = model.url;
    }
    else if (method == "create") {

        options.url = model.url+"Post";
    }
    else {

        options.url = model.url;
    }

    Backbone.emulateJSON = true

    return Backbone.sync(method, model, options);
}

新しいアイテムを作成するときは、model.url + "Post" を使用していると想定し、model.get("Name") には正しいデータが含まれています。正しいセクションが実行され、データベースにエントリが作成されますが、名前は空です。

ただし、.NET コントローラーが投稿を処理すると、名前にはデータが含まれなくなります。

私のコントローラーコードは次のようになります。

   public class myController : Controller
    {

        public ActionResult myList()
        {


            List<myCore.myList> l = new List<myCore.myList>();
            l = myCore.myList.ListAll();
            return Json(l, JsonRequestBehavior.AllowGet);

        }




        [HttpPost]
        public ActionResult myListPost(myCore.myList doc)
        {


            doc.AccountGuid = Guid.NewGuid();

            Boolean created = doc.Create();

            return Json(doc);
        }

        [HttpPut]
        public ActionResult myListPut(myCore.myList doc)
        {

            myCore.myList doc1 = new myCore.myList();
            doc1.AccountGuid = Guid.Empty;
            doc1.Name = "testPut";
            Boolean created = doc1.Create();

            return Json(doc1);
        }


        [HttpDelete]
        public ActionResult myListDelete(myCore.myList doc)
        {
            //DeleteDoc(id);
            myCore.myList doc1 = new myCore.myList();
            doc1.id = Guid.NewGuid();
            doc1.AccountGuid = Guid.Empty;
            doc1.Name = "testDelete";
            Boolean created = doc1.Create();

            return Json(doc1);
        }
    }

モデル/クラスデータをコントローラーに取り込むために何をすべきか教えてください。

myList クラスは次のようになります。

public class myList
        {
            Guid _id = Guid.Empty;
            String _name = String.Empty;
            Guid _accountGuid = Guid.Empty;
            public Guid id
            {
                get { return _id; }
                set { _id = value; }
            }

            public String Name
            {
                get { return _name; }
                set { _name = value; }
            }

            public Guid AccountGuid
            {
                get { return _accountGuid; }
                set { _accountGuid = value; }
            }
}

アップデート

Backbone.emulateJSON = true を削除した後、動作するようになりました

私はまだ削除部分を機能させることができませんが。404エラーが発生します。Post と Get のみが機能します。

コントローラーの中はこんな感じ。

[ActionName("myList")]
    [HttpDelete]
    public ActionResult myListDelete(myCore.myList doc)
    {

        doc.Name += "-DELETE";


        return Json(doc);
    }

アップデート

それも考え出しました。

ASP.NET ハンドル PUT/DELETE 動詞

データベース内の正しいエントリを削除するために、任意のモデルまたはパラメータを渡すように見えますが。

4

1 に答える 1

0

デフォルトを次のように変更します

defaults: {
     Name: "Default name"
},
于 2012-12-29T03:12:22.773 に答える