ASP.NET MVC 3 RAZOR Modelsのデータ(配列とか)をViewsで使う
2012/04/01
「/Views/Home/index.cshtml」「/Controllers/HomeController.cs」「/Models/IndexData.cs」の3ファイルが対象。
※ファイル名は適宜変更。
※ファイル名は適宜変更。
とりあえず「/Views/Home/index.cshtml」内で基本「@ViewBag.ReCatNap」ってな感じで使えるようにする
文字列・配列共通(コントローラー「/Controllers/HomeController.cs」)
「ViewBag.ReCatNap」に「IndexData.GetReCatNapData()」の結果をいれる。
※ここやコンテンツページで直接、データをいれれば良いんだけど…MVCを始めたばかりなのでモデルで値を設定して、コントローラーでコンテンツに渡すようにする。
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Web;
- using System.Web.Mvc;
- using MvcApplication.Models;
- namespace MvcApplication.Controllers
- {
- public class HomeController : Controller
- {
- //
- // GET: /Home/
- public ActionResult Index()
- {
- ViewBag.ReCatNap = IndexData.GetReCatNapData();
- return View();
- }
- }
- }
※「6行目:using MvcApplication.Models;」を記載することによって「17行目」の「IndexData.GetReCatNapData()」が利用可能になる。
※「6行目:using MvcApplication.Models;」を記載しない場合「17行目」の「IndexData.GetReCatNapData()」を「MvcApplication.Models.IndexData.GetReCatNapData()」とする。
文字列データのモデルとコンテンツページ
モデル「/Models/IndexData.cs」
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Web;
- using System.Web.Security;
- using System.ComponentModel.DataAnnotations;
- namespace MvcApplication.Models
- {
- public static string GetReCatNapData()
- {
- string data = "recatnap";
- return data;
- }
- }
コンテンツページ「/Views/Home/index.cshtml」
- @ViewBag.ReCatNap
配列データのモデルとコンテンツページ
モデル「/Models/IndexData.cs」
「List」を使う。
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Web;
- using System.Web.Security;
- using System.ComponentModel.DataAnnotations;
- namespace MvcApplication.Models
- {
- public static List<string> GetReCatNapData()
- {
- //List<string> data = new List<string>();
- //data.Add("re");
- //data.Add("cat");
- //data.Add("nap");
- // 上記の記述違い
- List<string> data = new List<string>(){"re", "cat", "nap", };
- return data;
- }
- }
コンテンツページ「/Views/Home/index.cshtml」
- @ViewBag.ReCatNap[0]
- @ViewBag.ReCatNap[1]
- @ViewBag.ReCatNap[2]
連想配列データのモデルとコンテンツページ
モデル「/Models/IndexData.cs」
「Dictionary」を使う。
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Web;
- using System.Web.Security;
- using System.ComponentModel.DataAnnotations;
- namespace MvcApplication.Models
- {
- public static Dictionary<string, string> GetReCatNapData()
- {
- //Dictionary<string, string> data = new Dictionary<string, string>();
- //data["Id"]="re";
- //data["Name"]="cat";
- //data["Tel"]="nap";
- // 上記の記述違い1
- //Dictionary<string, string> data = new Dictionary<string, string>();
- //data.Add("Id", "re");
- //data.Add("Name", "cat");
- //data.Add("Tel", "nap");
- // 上記の記述違い2
- Dictionary<string, string> data = new Dictionary<string, string>()
- {
- {"Id", "hama"},
- {"Name", "cat"},
- {"Tel", "nap"},
- };
- return data;
- }
- }
コンテンツページ「/Views/Home/index.cshtml」
- @ViewBag.ReCatNap["Id"]
- @ViewBag.ReCatNap["Name"]
- @ViewBag.ReCatNap["Tel"]
多次元配列データのモデルとコンテンツページ
モデル「/Models/IndexData.cs」
「List」内で「List」を使う。
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Web;
- using System.Web.Security;
- using System.ComponentModel.DataAnnotations;
- namespace MvcApplication.Models
- {
- public static List<object> GetReCatNapData()
- {
- List<object> data = new List<object>();
- data.Add(new List<string>(){"re", "cat", "nap"});
- data.Add(new List<string>(){"り", "きゃっと", "なっぷ"});
- return data;
- }
- }
コンテンツページ「/Views/Home/index.cshtml」
- @ViewBag.ReCatNap[0][0]
- @ViewBag.ReCatNap[0][1]
- @ViewBag.ReCatNap[0][2]
- @ViewBag.ReCatNap[1][0]
- @ViewBag.ReCatNap[1][1]
- @ViewBag.ReCatNap[1][2]
多次元の連想配列データのモデルとコンテンツページ
モデル「/Models/IndexData.cs」
「List」内で「Dictionary」を使う。
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Web;
- using System.Web.Security;
- using System.ComponentModel.DataAnnotations;
- namespace MvcApplication.Models
- {
- public static List<object> GetReCatNapData()
- {
- //List<object> data = new List<object>();
- //
- //data.Add(new Dictionary<string, string>()
- //{
- // {"Id", "re"},
- // {"Name", "cat"},
- // {"Tel", "nap"},
- //});
- //data.Add(new Dictionary<string, string>()
- //{
- // {"Id", "り"},
- // {"Name", "きゃっと"},
- // {"Tel", "なっぷ"},
- //});
- // 上記の記述違い
- List<object> data = new List<object>()
- {
- new Dictionary<string, string>()
- {
- {"Id", "re"},
- {"Name", "cat"},
- {"Tel", "nap"},
- },
- new Dictionary<string, string>()
- {
- {"Id", "り"},
- {"Name", "きゃっと"},
- {"Tel", "なっぷ"},
- },
- };
- return data;
- }
- }
コンテンツページ「/Views/Home/index.cshtml」
- @ViewBag.ReCatNap[0]["Id"]
- @ViewBag.ReCatNap[0]["Name"]
- @ViewBag.ReCatNap[0]["Tel"]
- @ViewBag.ReCatNap[1]["Id"]
- @ViewBag.ReCatNap[1]["Name"]
- @ViewBag.ReCatNap[1]["Tel"]