このトピックに関するSOの質問をいくつか読んだことがありますが、正直なところ、それらのほとんどは私には複雑すぎました。ASP.NET mvc は初めてです。
私はサンプルの ASP.NET mvc 4 アプリを作成しました。このアプリは、ムービー データベースのチュートリアルに従って (そして少しだけ逸脱して) 作成しました。組み込みのアカウント ビット、Entity Framework (何かを変更するたびに面倒なことが判明しました) に加えて、チュートリアルのモデルに基づいて自分で構築した 2 つのモデルがあります。
1) バグ
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity;
namespace MasterDetailPractice.Models
{
public class Bug
{
public int BugID { get; set; }
public string BugTitle { get; set; }
public DateTime BugDate { get; set; }
public string BugStatus { get; set; }
[Column(TypeName = "ntext")]
[MaxLength]
public string BugDescription { get; set; }
}
public class BugDBContext : DbContext
{
public DbSet<Bug> Bugs { get; set; }
public DbSet<Comment> Comments { get; set; }
}
}
2) コメント
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity;
namespace MasterDetailPractice.Models
{
public class Comment
{
public int CommentID { get; set; }
public int BugID { get; set; }
public int UserID { get; set; }
public DateTime CommentDate { get; set; }
[Column(TypeName = "ntext")]
[MaxLength]
public string CommentText { get; set; }
}
}
アプリを実行すると、/Project に移動して、バグを追加できる [追加] リンクを含む標準のインデックス ビューを取得できます。追加すると、通常の編集/詳細/削除リンクが表示されます。
アプリを実行すると、/Comment に移動して、コメントを追加できる [追加] リンクを含む標準のインデックス ビューを取得することもできます。追加すると、通常の編集/詳細/削除リンクが表示されます。
ここまでは、私は大丈夫です。CRUD フォームは機能しますが、一緒に機能しません。
問題:
現在、コメントをバグに適用するには、実際に BugID を /Comment/Create フォームに入力する必要があります。そして、コメントはすべて /Comment/ ルートでのみ利用できます。
代わりに、次のことが必要です。
- 「コメントの追加」フォームは、ユーザーが入力しなくても、保存する BugID を自動的に認識する必要があります。
- データの詳細表示: /コメント/インデックス ビューは、/バグ/編集および/またはバグ/詳細ページの下部に表示され、現在のバグに関連するコメントのみが表示されます。
- 「コメントの追加」リンクは、/Bug/Edit または /Bug/Details ページからのみ表示される必要があるため、バグに関係なくコメントが追加されることはありません。
3 日間かけてすべての Google 検索結果とこのトピックに関する投稿を調べた後、自分でこれを理解できなかったのは驚くべきことです。とはいえ、ここで私は、これの可能な限り簡単な実装を学びたいと思っています。
この質問に適切に回答できるようにするために、より多くのコード (コントローラー、またはビューなど) を投稿する必要がありますか?
学習の遅い列車が駅から出発するのを楽しみにしています...