MVCで2つのモデルを使用するビューの作成方法


ビューは、ユーザーにデータを表示する責任を持ちます。ビューは通常、モデルからデータを受け取り、それを適切に表示するためのテンプレートやHTMLコードを生成します。通常、ビューは1つのモデルに基づいてデータを表示しますが、場合によっては2つのモデルを同時に使用する必要があります。

2つのモデルを使用するビューを作成するには、次の手順を実行することができます。

  • 取得したデータをビューに渡すために、ビューモデル(ViewModel)を作成します。ビューモデルは、ビューが必要なデータのみを保持するためのモデルです。例えば、UserモデルとPostモデルの一部のプロパティを持つ新しいクラスを作成します。

  • public class MyViewModel
    {
        public User User { get; set; }
        public List<Post> Posts { get; set; }
    }
    1. コントローラからビューモデルを作成し、必要なデータを設定します。
    public ActionResult MyView()
    {
        User user = userRepository.GetUser();
        List<Post> posts = postRepository.GetPostsByUser(user.Id);
        MyViewModel viewModel = new MyViewModel
        {
            User = user,
            Posts = posts
        };
        return View(viewModel);
    }
    1. ビューでは、受け取ったビューモデルのプロパティを使用してデータを表示します。
    @model MyViewModel
    <h1>@Model.User.Name</h1>
    @foreach (var post in Model.Posts)
    {
        <div>@post.Title</div>
        <p>@post.Content</p>
    }

    上記のコード例では、ビューモデルを使用してUserモデルとPostモデルのデータをビューに渡しています。ビューでは、@modelディレクティブでビューモデルの型を宣言し、@Modelを使用してプロパティにアクセスします。

    これにより、2つのモデルのデータを同時に表示するビューが作成されます。必要に応じて、ビューモデルに追加のプロパティやメソッドを追加することもできます。

    以上が、MVCで2つのモデルを使用するビューを作成する方法の簡単な例です。この方法を使って、自分のアプリケーションに適応してみてください。