4

このトピックに関する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 検索結果とこのトピックに関する投稿を調べた後、自分でこれを理解できなかったのは驚くべきことです。とはいえ、ここで私は、これの可能な限り簡単な実装を学びたいと思っています。

この質問に適切に回答できるようにするために、より多くのコード (コントローラー、またはビューなど) を投稿する必要がありますか?

学習の遅い列車が駅から出発するのを楽しみにしています...

4

1 に答える 1

0

さて、あなたはいくつかのことをする必要があります。

最初に、次のような新しいアクション メソッドを CommentController に作成します。

public ActionResult Index(int bugId)
{
    // Your logic to fetch all comments by BugID through EntityFramework or whatever
    return View(data);
}

ここで、Bug/Edit.cshtml または Bug/Details.cshtml ページに次の行を追加して、これらのアクションをインラインでレンダリングします。

@Html.RenderAction("Index", "Comment", new { @bugId = Model.BugID }

この場合、モデルとして BugModel を Bug/Edit.cshtml または Bug/Details.cshtml に戻す必要があります。

これにより、必要なフォームが表示され、モデルからの BugID が渡されます。

最後の質問については、「コメントを追加」リンクを Comment/Index.cshtml ビュー内に配置してください。バグのコンテキスト内でのみ表示されるためです。おそらく、これを CommentController に投稿するフォームにラップする必要があります。

ASP.NET 4 でのフォームの操作に関する役立つリンクを次に示します。

http://www.asp.net/mvc/tutorials/hands-on-labs/aspnet-mvc-4-helpers,-forms-and-validation

于 2013-08-14T00:22:36.803 に答える