ASP.NET MVC(C#)でViewBagを使う方法を徹底解説!基本の仕組みと実装例
ViewBagは、C# 4.0で導入された「dynamic」機能を活用した仕組みです。この機能により、オブジェクトに対してプロパティを動的に追加することが可能になります。内部的には、Controllerクラスの基底クラスであるControllerBaseクラスが持つdynamic型のプロパティとして実装されています。
ViewBagの主な特徴は以下の通りです。
- データはコントローラーからビューへの一方向のみで受け渡しが可能(ビューからコントローラーへの逆方向は不可)
- リダイレクトが発生すると、ViewBagの値はnullになる
- 強い型付けへの変換を行わずに、任意の数のフィールドを動的に追加・取得できる
ViewBagへのデータ格納方法
ViewBagにデータを保存する場合は、次のようにプロパティ名を指定して代入します。
ViewBag.Countries = countriesList;
ViewBagからのデータ取得方法
保存したデータを取り出す際も、同様にプロパティ名を指定するだけでアクセスできます。
string country = ViewBag.Countries;
コントローラーの実装例
ここでは、国名のリストをViewBag経由でビューに渡すサンプルを紹介します。
using System.Collections.Generic;
using System.Web.Mvc;
namespace DemoMvcApplication.Controllers{
public class HomeController : Controller{
public ViewResult Index(){
ViewBag.Countries = new List<string>{
"India",
"Malaysia",
"Dubai",
"USA",
"UK"
};
return View();
}
}
}ビュー(View)の実装例
ビュー側では、Razor構文のforeachループを使って、ViewBagに格納されたリストを順番に表示しています。
@{
ViewBag.Title = "Countries List";
}
<h2>Countries List</h2>
<ul>
@foreach(string country in ViewBag.Countries){
<li>@country</li>
}
</ul>実行結果
上記のコードを実行すると、ブラウザ上に「India」「Malaysia」「Dubai」「USA」「UK」の5つの国名がリスト形式で表示されます。

このようにViewBagを使えば、型を事前に定義することなく手軽にコントローラーからビューへデータを渡せます。ただし、リダイレクト時には値が失われる点や、大規模なデータ受け渡しにはViewModelの利用が推奨される点にも注意しましょう。
-
Windows 11/10でnet useコマンドを使う方法|ネットワークドライブの割り当てとパラメータ解説
net useコマンドを使えば、ローカルエリアネットワーク(LAN)上の共有リソース(ネットワークプリンターやマップドライブなど)に接続できます。このコマンドに馴染みがない方でも、このガイドを読めばnet useコマンドの基本から実践的な使い方までしっかり理解でき、ネットワーク機器の管理がぐっと楽になります。 net useコマンドとは?仕組みを解説 実際に使い始める前に、このコマンドがどの環境で使えるのかを把握しておきましょう。net useコマンドは、Windows 11やWindows 10はもちろん、それ以前のバージョンのWindowsでもほぼすべてで利用可能です。コマンドラインツー
-
ASP.NET Machineアカウントとは?正体と安全な削除方法を解説
Windowsのローカルユーザーアカウントは、複数人で同じPCを共有する際にプライバシーを守れる便利な機能です。しかし最近、多くのユーザーの間で奇妙な現象が報告されています。それが、「ASP.NET Machine」という見覚えのないアカウントがPCに勝手に現れるというものです。「家族がいたずらをしたのでは?」と不安になる方もいるかもしれませんが、ご安心ください。この記事では、ASP.NET Machineアカウントとは何か、そしてPC上のこのユーザーアカウントにどう対処すればよいのかをわかりやすく解説します。ASP.NET Machineアカウントとは?一見ウイルス感染のように思えますが、実