0

.Net と backbone.js を学習しようとしています。私は非常に単純なプロジェクトに取り組んでいます。すべての受信者を一覧表示し、アドレスなどを更新するためのものです。データベースから受信者のリストを取得する RecipientsController があります。これがコントローラーです。

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

}

これは正常に機能します。私のバックボーン アプリは JSON を受け取ることができ、正しく表示されます。しかし、編集(PUT)を機能させることができませんでした。それで、私はそれについてググって、コントローラーの代わりに ApiController を使用したチュートリアルに出くわしました。やってみることにしたので、コントローラーを ApiController に変更しました。

public IEnumerable<Recipients> GetAllRecipients()
    {

        return dbContext.Recipients.AsEnumerable();

    }

ApiController を試すと、バックボーンで 404 エラーが発生します。理由がわかりません。

これは私の

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

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

2 つのビュー (インデックスと受信者) があり、どちらもビュー/ホームの下にあります。これは私の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 属性がある場合にのみ PUT を実行します。これは、データを POST または SAVE する方法を知るためのバックボーンの規則です。

おそらく、バックボーンはサーバーにデータを投稿しようとしていますが、POST するアクションがないため、404 を返しています。モデルにデータを取得したら、サーバーから ID 属性を返すようにしてください。

GET でこのクラスを返すと想像してください。例:

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

}

読んでくださいhttp://backbonejs.org/#Model-save

それが役に立てば幸い。

于 2014-06-29T23:09:22.063 に答える