骨干和mvc

时间:2012-12-28 23:32:47

标签: c# asp.net-mvc backbone.js model controller

我有一个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错误。只有发布和获取工作。

在控制器中看起来像这样。

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

        doc.Name += "-DELETE";


        return Json(doc);
    }

更新

想出那个。

ASP.NET Handle PUT/DELETE verbs

虽然我似乎可以传递任何模型或参数,以便删除数据库中的正确条目。

1 个答案:

答案 0 :(得分:0)

将默认值更改为

defaults: {
     Name: "Default name"
},