0

我正在尝试学习.Net 和backbone.js。我正在做一个非常简单的项目;它用于列出所有收件人并更新他们的地址和内容。我有一个 RecipientsController,它只是从数据库中获取收件人列表。这是控制器。

public ActionResult GetAllRecipients()
{
    var recipients = dbContext.Recipients.ToList();
    return Json(recipients, JsonRequestBehavior.AllowGet);

}

这很好用;我的主干应用程序可以接收 JSON 并正确显示它们。但我无法让编辑(PUT)工作。所以,我在谷歌上搜索了一下,发现了一个使用 ApiController 而不是 Controller 的教程。我决定试一试,所以我把Controller改成了ApiController。

public IEnumerable<Recipients> GetAllRecipients()
    {

        return dbContext.Recipients.AsEnumerable();

    }

当我尝试使用 ApiController 时,主干给了我 404 错误。我不明白为什么。

这是我的

HomeController: 
    {
        public ActionResult Index()
        {
            return View();
        }

        public ActionResult Recipients()
        {
            return View();
        }

我有两个视图(索引和收件人)都在视图/主页下。这是我的 ActionLink:

<li>
     <a id="recipients">@Html.ActionLink("Admin", "Recipients", "Home")</a>
</li>

现在,使用 ApiController,如果我将 ActionLink 从 Home 更改为 Recipients,将 Recipients 更改为 GetRecipients,并将 View (Recipients) 从 Home 下移动到新文件夹 Recipients,那么它可以工作,但它不使用我的主干视图。我真的很困惑。有人可以为我解释一下,以便我理解吗?由于我正在学习,我很难理解我在网上找到的一些描述(这对我来说太高级了),但我也不确定我找到的解释是否是我需要的。

先感谢您。

编辑:

这是我的路线:

    routes.MapRoute(
        "Recipients", 
        "{Controller}/{action}",
        new { Controller = "Recipients", action = "GetAllRecipients", id = UrlParameter.Optional },
        new { httpMethod = new HttpMethodConstraint("GET") }
    );
4

1 回答 1

0

如果模型具有 ID 属性,Backbone 只会执行 PUT,这是骨干网知道如何 POST 或 SAVE 数据的约定。

可能,主干正试图在服务器上发布数据,它返回 404,因为您没有 POST 操作。当您将数据获取到您的模型时,请尝试从服务器返回一个 ID 属性。

想象一下,您在 GET 上返回这个类。例子:

public class testDTO()
{   
   long ID {get;set;}
   string Something { get;set;}

}

阅读http://backbonejs.org/#Model-save

希望能帮助到你。

于 2014-06-29T23:09:22.063 回答