0

我有一个 Backbone 项目,其中有以下模型,我想将其传递给 .NET 以进行数据库更新。

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 and 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 回答